2012-02-08 9 views
18

Mam właściwość, która wygląda tak:słaby nieruchomość dla pełnomocnika nie może być utworzona

@property (weak, nonatomic) id<NavigationControllerDelegate> delegate; 

Ale gdy uruchomię mojej aplikacji pojawia się następujący błąd:

objc[4251]: cannot form weak reference to instance (0x101e0d4b0) of class TabBarController 

Jedyny powód mogę get from google dla tego błędu jest to, że dostajesz go, gdy próbujesz utworzyć słabe odniesienie do obiektu, który zastępuje retain/release/dealloc, którym nie jestem. Moje TabBarController dziedziczy z NSViewController.

Ktoś wie, co może spowodować? Działa, gdy używam "assign", ale oczywiście wolę używać "weak".

+0

CocoaFu, "nie można utworzyć słabe odwołanie do instancji ..." jest zawsze błąd wykonania. –

Odpowiedz

36

Według Apple Transitioning to ARC Release Notes,

You cannot currently create weak references to instances of the following classes:

NSATSTypesetter , NSColorSpace , NSFont , NSMenuView , NSParagraphStyle , NSSimpleHorizontalTypesetter , and NSTextView .

Note: In addition, in OS X v10.7, you cannot create weak references to instances of NSFontManager , NSFontPanel , NSImage , NSTableCellView , NSViewController, NSWindow , and NSWindowController . In addition, in OS X v10.7 no classes in the AV Foundation framework support weak references.

(Uwaga: trzeba być bardzo ostrożnym z nonzeroing słabe referencje ...)

+0

Świetne rzeczy! Podejrzewałem, że coś było inaczej z NSViewController na podstawie moich ustaleń wcześniej. Nie widziałem jednak tego, co właśnie wkleiłeś. Dzięki, to zdecydowanie wyjaśnia całą sprawę! –

Powiązane problemy