2012-02-08 11 views
18

ben şöyle bir özelliği vardır:zayıf mülkiyet kurulamaz

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

Ama benim app çalıştırdığınızda aşağıdaki hatayı alıyorum:

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

tek sebebi elimden Bu hata için google dan almak, ben/yok/dealloc saklamak geçersiz bir nesneyi zayıf bir referans oluşturmaya çalıştığınızda olsun ki, ben değilim. Benim TabBarController NSViewController'dan miras alıyor.

Bunun nedenini bilen var mı? Eğer "atama" kullanırsam çalışır, ama açıkça "zayıf" kullanmayı tercih ederim. göre

+0

CocoaFu, "örneğine zayıf başvuru oluşturmaz ..." dir her zaman bir çalışma zamanı hatası. –

cevap

36

Apple'ın 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.

(Not: Bir zayıf başvurular nonzeroing çok dikkatli olması gerekiyor ...)

+0

Harika şeyler! Daha önce bulgularıma dayanarak NSViewController ile farklı bir şey olduğunu düşündüm. Yine de ne yapıştırdığını görmedim. Teşekkürler, bu kesinlikle her şeyi açıklığa kavuşturuyor! –