Стоит ли изучать Objective-C 1.x до Objective-C 2.x? - PullRequest
1 голос
/ 03 августа 2010

Я знаю некоторые различия, такие как сборка мусора и 64-битная поддержка, но у меня есть книга, основанная на 1.x, и мне было интересно, буду ли я тратить свое время на изучение этого, а затем наращивать до 2.1 после прочтения?

Ответы [ 2 ]

7 голосов
/ 03 августа 2010

2,0 против 1,0 не очень полезное различие, поскольку линии значительно более размыты.Ответ Dreamlax верен, но только применительно к синтаксису (и даже тогда есть некоторые пробелы).

В частности, здесь есть синтаксис языка, который нужно учитывать и также ABI;фактический двоичный формат для рассмотрения.Есть также функции, которые работают только в LLVM.

Хорошая новость, и, как сказал Dreamlax, заключается в том, что вам, как правило, не особо важны 2.0 против 1.0, как синтаксически, так и из ABI.перспектива.С синтаксической точки зрения, используйте функции, которые вы хотите, и покончите с этим.С точки зрения ABI, версия 1.0 против 2.0 интересна с научной точки зрения, но будет невидима для вашего кода.Большинство деталей обычно становятся проблемой только для авторов фреймворков и больших приложений.В основном.

В любом случае и вне головы:

  1. Сборка мусора доступна только в Mac OS X (i386 и x86_64).

  2. @ property - это синтаксическая функция Objective-C 2.0, доступная на всех платформах и компиляторах.

  3. Блоки являются расширением C, совместимы с Objective-C и, начиная с iOS 4 , доступны на всех платформах и компиляторах.

  4. Блоки и C ++ поддерживаются только в LLVM 2.0 , компиляторе, который еще не выпущен, но доступен с http://llvm.org/

  5. @ synthesize переменных экземпляра доступно только в Objective-C 2.0 ABI (как и хрупкие iVars, на которых он основан).

  6. Автоматический синтез @ property подразумеваемых иваров в LLVM 2.0, в настоящее время является экспериментальной функцией.

  7. poseAsClass: устарел в i386 иполностью удалено в x86_64 и iOS (т.е. не существует в ABI Objective-C 2.0)

  8. Объективы класса Objective-C 1.0 ABI выставлены как структуры.Objective-C 2.0 предоставляет API для получения и редактирования почти всех внутренностей (ошибки в файлах на любых недостающих частях, пожалуйста), что позволяет указанным внутренностям изменяться в будущем.

  9. "Исключения с нулевой стоимостью »и« Unified C ++ / Objective-C Exception »оба только в Objective-C 2.0 ABI, хотя детали реализации значительно различаются между x86_64 и ARM.

Iя уверен, что мне чего-то не хватает.

2 голосов
/ 03 августа 2010

Многие программисты Objective-C изучили версию 1 до изучения версии 2. Вы не будете тратить время на изучение этой книги, но как только вы закончите с ней и освоитесь с версией 1, вы сможете двигаться дальше.к изучению версии 2. Если вам когда-либо придется ориентироваться на более старые системы Mac OS X, важно знать различия между двумя версиями.

Код Objective-C 1.0 по-прежнему является действительным кодом Objective-C 2.0.Я встречал несколько программистов, которые даже предпочитают Objective-C 1.0, чем Objective-C 2.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...