Какая версия iOS требуется для использования @autoreleasepool? - PullRequest
6 голосов
/ 07 декабря 2011

Когда я запускаю код с помощью ключевого слова @autorelease на iOS 4.3.x, он выдает эту ошибку.

dyld: lazy symbol binding failed: Symbol not found: _objc_autoreleasePoolPush
  Referenced from: /Users/Eonil/Library/Application Support/iPhone Simulator/4.3.2/Applications/3782382E-293A-4D5E-86E6-28BE35CF6048/EonilCocoaComplementsTester.app/EonilCocoaComplementsTester
  Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation

dyld: Symbol not found: _objc_autoreleasePoolPush
  Referenced from: /Users/Eonil/Library/Application Support/iPhone Simulator/4.3.2/Applications/3782382E-293A-4D5E-86E6-28BE35CF6048/EonilCocoaComplementsTester.app/EonilCocoaComplementsTester
  Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation

Я думал, что ключевое слово - это просто замена явного создания / удаления пула автоматического выпуска. Во всяком случае, это не так, и выкинул ошибку. Поддерживается ли это только в конкретной версии iOS? Так, где я могу проверить информацию о версии этого ключевого слова?

Ответы [ 3 ]

4 голосов
/ 07 декабря 2011

Вы имеете в виду @autoreleasepool?

Вы можете использовать @autoreleasepool в приложении с целью сборки iOS 4.3.x, если вы используете Xcode 4.2 и iOS 5 SDK. Несмотря на переход к рекомендациям ARC , в котором говорится, что «ARC вводит конструкцию оператора в грамматику Objective-C» в @autoreleasepool, что может указывать на необходимость ARC, он продолжает говорить: «Этот синтаксис доступен во всех режимах Objective-C. "

Хотя я не думаю, что это особенно понятная документация, это означает, что вы можете использовать синтаксис @autoreleasepool как с ARC, так и без него - если вы используете iOS 5 SDK.

3 голосов
/ 29 мая 2012

Кажется, это ошибка в симуляторе.

Установка цели развертывания 4.2 вместо 4.2.1 работала для меня.

enter image description here

3 голосов
/ 07 декабря 2011

только что протестировал @autoreleasepool {} на iPhone первого поколения под управлением iOS3.0 - работает без проблем

...