我正在開發一個啓用了弧的iPad應用程序。 但我現在使用一個沒有弧的小框架。我設置了標誌-fno_objc_arc等。 但那裏仍留有一個問題: 框架內的一個對象保存到當前的viewController的參考。 如果我離開當前的ViewController,框架釋放控制器屬性:ARC和非ARC框架 - iOS - 適當的釋放不工作?
[viewController release];
的對象被釋放,一切似乎要被罰款。但仔細一看,你會發現所有的實例變量仍然有效且存在。 假設我的viewController有兩個實例變量實例變量 - 一個數組和subviewController。通常在弧中,如果主對象被釋放,實例變量將被解除分配。但是,如果非弧框架發送釋放消息,似乎該對象不會釋放其實例變量,導致內存錯誤,因爲它們在其他地方沒有引用!
EDIT:
下面是引用計數,該表是釋放 的viewController的實例變量:
控制器之前:1
控制器實例表之前:1
現在[的viewController釋放]被髮送
控制器後:0
控制器實例表之後:1
對這個問題有什麼建議?我將不勝感激任何幫助!使用ARC
是的,謝謝,這正是它應該如此: 理由:即使ARC自動銷燬實例變量.....(ARC Doc) 但是如果[viewController release]被調用(在非弧框架中) ,釋放控制器(由arc管理)的實例變量仍然存在,儘管retainCount爲1 - 在發佈發佈之前和之後 – Alexander 2012-02-08 10:49:24
是否檢查過它,或者您只是假設了這一點? – 2012-02-08 10:54:53
我應該如何設想?我沒有調試檢查它:po [viewController controllerTable] (gdb)print(int)[0x88be250 retainCount] $ 1 = 1 Now [viewController release]; (gdb)print(int)[0x88be250 retainCount] $ 2 = 1 –
Alexander
2012-02-08 10:58:00