工程启用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 关注
- 139 浏览
添加回答
举报
0/150
提交
取消