我想要一個類型爲類的ivar,並在指針傳入後保持指針。但無論我做什麼,arc都不會讓我這樣做。例如,如果我聲明Objective C arc - 保持對類的引用
@property (nonatomic, strong) Class myClass;
編譯器確定myClass應該是unsafe_unretained。如果我試試這個:
-(id) initWithClass: (Class) passedInClass {
if ((self = [super init])) {
self.myClass = passedInClass;
}
return self;
}
什麼情況是,即使類是非零調用代碼,它是零init方法中。
關閉弧的缺點,有什麼辦法可以解決這個問題嗎?
編輯:這個問題是錯的。它確實有效。看到接受的答案。
類與ARC不兼容。一些objc對象具有自定義內存管理(即它們覆蓋保留釋放和dealloc),因此不能與ARC一起使用。我不知道是否有他們的名單,但我很確定班是其中之一。我不知道任何解決方案,所以我不會發布這個答案。 – borrrden 2012-04-26 02:35:22
@borrrden ARC處理類指針。 [clang自動引用計數,第3節「可保留對象指針」](http://clang.llvm.org/docs/AutomaticReferenceCounting.html#objects):「有三種可保留對象指針類型:... Objective-C對象指針(ID,類,NSFoo *等)...「 – 2012-04-26 05:41:20
@robmayoff那麼那麼......我站在更正> _ <。我尋找我在想什麼,現在我意識到我指的是重寫保留或釋放的類不能成爲WEAK引用的目標......所以它完全是一個不同的主題。 – borrrden 2012-04-26 06:51:05