2012-02-05 56 views
7

使用自動引用計數(ARC)時,iOS中有哪些類不能用__weak指針引用?哪些iOS類不支持歸零弱引用?

蘋果Transitioning to ARC Release Notes只列出了蘋果班至今:

哪些類不支持零弱引用?

您當前無法創建歸零弱引用下面的類的實例:

NSATSTypesetterNSColorSpaceNSFontNSFontManagerNSFontPanelNSImageNSMenuViewNSParagraphStyleNSSimpleHorizontalTypesetterNSTableCellViewNSTextViewNSViewControllerNSWindow,和NSWindowController。另外,在OS X中,AV Foundation框架中沒有任何類支持弱引用。

是否有類似的列表UIKit類或甚至iOS特定的類一般?

謝謝。

+0

從10.8開始,可以通過ARC弱引用指向NSWindow,NSWindowController和NSViewController的實例:https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKitOlderNotes/index.html# 10_8SharingService – 2015-10-12 09:35:11

回答

5

如果您嘗試對不支持弱引用的對象形成弱引用,那麼程序應該立即死亡。這在Objective-C進步深度視頻從WWDC 2011中提到。所以你應該立即知道如果你發現一個不支持他們的課程。

我很確定在中缺少提及過渡到ARC發行說明意味着所有的UIKit類都是安全的。我不確定有關AV Foundation類的警告是否適用於iOS。我測試了在iOS 5和Lion上創建對AVCaptureSession的弱引用,並且都沒有崩潰。我測試了在Lion上創建了一個對NSWindow的弱引用,並且它與消息cannot form weak reference to instance (0x102232ef0) of class NSWindow一起墜毀。

+0

不,程序沒有死於_immediately_(如在啓動時) - 只在引用時死掉。同樣如上所述,至少'UITableViewCell' -descendants不兼容,已在iOS 5 iPad Simulator中進行了測試。 – adib 2012-02-06 12:42:58

+0

@adib請在您的問題中包含嘗試創建對錶格單元格的弱引用時得到的實際錯誤消息。 – 2012-02-06 15:04:27

+0

'UITableViewCell'允許弱引用。我已經測試過它。如果發生異常,請發佈控制檯消息和堆棧跟蹤。 – 2012-02-06 18:26:02