2011-12-07 17 views
6

Po uruchomieniu kodu przy użyciu słowa kluczowego @autorelease w systemie iOS 4.3.x zgłoszony zostanie ten błąd.Jaka wersja systemu iOS jest wymagana do korzystania z @autoreleasepool?

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 

Myślałem, że słowo kluczowe jest po prostu zastąpieniem jawnego tworzenia/usuwania puli autoreas. W każdym razie tak nie było i popełnił błąd. Czy jest obsługiwana tylko w określonej wersji systemu iOS? Gdzie mogę sprawdzić informacje o wersji tego słowa kluczowego?

+1

to może być pomocne http://stackoverflow.com/questions/8069570/autoreleasepool-make-errors – RolandasR

Odpowiedz

4

Czy odnosisz się do @autoreleasepool?

Możesz użyć @autoreleasepool w aplikacji z wbudowanym celem systemu iOS 4.3.x, jeśli używasz Xcode 4.2 i iOS 5 SDK. Pomimo iż transitioning to ARC guidelines stwierdza, że ​​"ARC wprowadza konstrukt instrukcji do gramatyki Objective-C" w @autoreleasepool, co może sugerować, że ARC jest wymagany, mówi dalej: "Ta składnia jest dostępna we wszystkich trybach Celu-C."

Chociaż nie sądzę, że jest to szczególnie przejrzysta dokumentacja, oznacza to, że można użyć składni @autoreleasepool zarówno z ARC, jak i bez niego, jeśli używasz zestawu SDK iOS 5.

+0

@autoreleasepool nie wymaga ARC. zobacz .. http://stackoverflow.com/q/7950583/927947 – NJones

+0

Ach, ciekawe, zaktualizowałem moją odpowiedź, aby to poprawić i podkreślić kluczowe części połączonej dokumentacji, która w pierwszym czytaniu mogłaby zostać źle zinterpretowana ... tak jak ja . :) –

3

tylko przetestowane @autoreleasepool {} na pierwszej generacji iPhone uruchomiony iOS3.0 - działa bez problemu

+0

To prawda, właśnie wypróbowałem na moim iPhone 3G iOS 3.1.3, bez problemów – JomanJi

3

Wydaje się być to błąd w symulatorze.

Ustawiono docelowe wdrożenie do wersji 4.2 zamiast 4.2.1.

enter image description here

+0

Miałem dokładnie ten sam problem i to rozwiązało to dla mnie i – wasabi

+0

ten pracował dla mnie. +1 za to :) – pahan

Powiązane problemy