2012-02-08 11 views
18

ho una proprietà che assomiglia a questo:immobili debole delegato non può essere formata

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

Ma quando eseguo il mio app ottengo il seguente errore:

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

L'unico motivo che posso ottenere da Google per questo errore è che si ottiene quando si tenta di formare un riferimento debole a un oggetto che sovrascrive retain/release/dealloc, che io non sono. My TabBarController eredita da NSViewController.

Qualcuno sa cosa potrebbe causare questo? Funziona se uso "assegna", ma ovviamente preferirei usare "debole".

+0

CocoaFu, "non può costituire riferimento debole per esempio ..." è sempre un errore di runtime. –

risposta

36

Secondo il 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.

Apple (Nota: bisogna essere molto attenti con nonzeroing riferimenti deboli ...)

+0

Grandi cose! Sospettavo che ci fosse qualcosa di diverso con NSViewController basato sulle mie scoperte prima. Non avevo visto quello che hai appena incollato. Grazie, questo sicuramente chiarisce il tutto! –

Problemi correlati