工程啟用ARC后,delegate不能設置成assign屬性了,只能是unsafe_unretained么//.hid __unsafe_unretained _delegate;@property(nonatomic,unsafe_unretained) id <EGORefreshTableHeaderDelegate> delegate;//.m@synthesize delegate=_delegate;if (!_delegate) { return;
}unsafe_unretained的指針應該如何避免對象指向丟失,一旦丟失,即使是上面的if判斷調用都會crash,如何處理呢
2 回答

婷婷同學_
TA貢獻1844條經驗 獲得超8個贊
正確的寫法是
__unsafe_unretained id<EGORefreshTableHeaderDelegate> _delegate;
@property(nonatomic,assign) id <EGORefreshTableHeaderDelegate> delegate;
crash和此處無關,是你別的地方已經釋放了此對象。
如果此處改為強引用,則不可避免的造成retain cycle從而內存泄露,是萬萬不能的。你要做的是檢查為何釋放后還會被回調。
- 2 回答
- 0 關注
- 166 瀏覽
添加回答
舉報
0/150
提交
取消