两者都可以保证对传入的对象不会改变引用计数,但是weak对象必须是oc对象。weak比assign强大的地方就是在指向的对象销毁时,所有指向该对象的weak指针都会置为nil。这样我们就可以写出如此简洁的判断if
(self.delegate && [self.delegate respondsToSelector:@selector(test:)])。而在MRC中,如果直接写这样的代码,如果调用者在对象销毁时未将delegate置为nil,delegate将变成野指针,而导致程序挂掉。所以在dealloc中[xxx
release]前,加上xxx.delegate = nil。这也是为什么苹果官方推荐大家是用ARC,ARC在很多地方都可以保证程序的健壮性。
assign 与weak的亲区别
最新推荐文章于 2024-03-12 22:34:50 发布
