Существует функция математической библиотеки C99, называемая copysign (), которая принимает знак одного аргумента и абсолютное значение другого:
result = copysign(1.0, value) // double
result = copysignf(1.0, value) // float
result = copysignl(1.0, value) // long double
даст вам результат +/- 1.0, в зависимости от знака стоимости. Обратите внимание, что нули с плавающей запятой подписаны: (+0) даст +1, а (-0) даст -1.
Я нашел ] Adium должен быть хорошо разработанным и написанным проектом Objective-C. У него также огромная кодовая база.
Окно быстрого поиска Google [ qsb-mac - Google Code ]
Я думаю, что окно быстрого поиска Google (QSB) заслуживает внимания. ИМХО это в значительной степени более чистая переписанная Googley версия Quicksilver ( Примечание: Н. Джиткофф, программист QS, также участвует в Google QSB).
Я не думаю, что есть какое-то одно место, где можно было бы изучить все идиомы и лучшие практики Objective-C, но вы можете найти их здесь и там со временем и на практике. Списки рассылки и блоги какао - хорошие ресурсы для этого. (Есть несколько SO-вопросов, связанных с этим.)
Я сам не углублялся в исходный код, но Omni-фреймворки пользуются большим уважением в сообществе Mac.
Я работаю над моя собственная структура , которая все еще грубая, но я стремлюсь к качественной документации в дополнение к понятному, хорошо структурированному коду.
Списки рассылки и блоги какао - хорошие ресурсы для этого. (Есть несколько SO-вопросов, связанных с этим.)Я сам не углублялся в исходный код, но Omni-фреймворки пользуются большим уважением в сообществе Mac.
Я работаю над моя собственная структура , которая все еще грубая, но я стремлюсь к качественной документации в дополнение к понятному, хорошо структурированному коду.
Списки рассылки и блоги какао - хорошие ресурсы для этого. (Есть несколько SO-вопросов, связанных с этим.)Я сам не углублялся в исходный код, но Omni-фреймворки пользуются большим уважением в сообществе Mac.
Я работаю над моя собственная структура , которая все еще грубая, но я стремлюсь к качественной документации в дополнение к понятному, хорошо структурированному коду.
Вот тестовое приложение, которое я написал сегодня . Ссылки для скачивания в разделе «получить исходный код» в правом верхнем углу.
Он небольшой, но демонстрирует хорошую организационную дисциплину (отдельный объект контроллера, а не все, что втиснуто в AppDelegate), простой слой модели с одним классом модели (заголовок), и правильное использование привязок какао.
Раньше я работал с исходниками GNUstep, у них хороший последовательный стиль кодирования и хорошо организованный код. Конечно, проект вряд ли мал, но, учитывая, что вы знаете, что делает большинство классов, поскольку вы использовали их в своих проектах Cocoa, легко увеличить масштаб, чтобы выделить интересующий вас фрагмент. Некоторые из приложений GNUstep Applications Project или Étoilé также могут быть хорошим местом для начала.
У Apple есть множество загружаемых примеров на веб-сайтах разработчиков. Вы видите исходный код, а лицензия - это BSDish, насколько я помню (используйте ее для чего угодно, но не размещайте исходный код без лицензии).
http://developer.apple.com/samplecode/Cocoa /index-date.html
На CocoaDev есть приличный список проектов Mac с открытым исходным кодом: http://cocoadev.com/CocoaOpen
Не все проекты все еще активны, но приличное количество из них есть. Я особенно рекомендую: