最近自己也在看object-c语言,有很多网友问:为什么delegate模式中的属性是assign,不是retain的问题?
应该从编程角度去理解,而不是从object-c的语言特性来理解:
因为delegate是一种设计模式,类似观察者模式,记住以下几点:
1. 观察者只负责通知被观察者信息的改变,而不关心被观察者的生命周期。如果存在就通知,不存在就不理会。
2. 被观察者的生命周期由自己负责
3. 如果使用retain,则在赋值时引用会加1。这样当被观察者需要销毁时还要额外调用一次assign,这种设计有待考虑吧?