iOS开发-协议Protocol&代理delegate

2015-10-28
阅读 1 分钟
2.9k
协议是声明了一些方法,协议里包含两种属性@provite和@optional,@provite是必须实现的方法,@optional是可选实现的方法.如果一个类遵循了这个协议,并且实现了这个协议里的方法,那么我们就说这个类遵循了这个协议的代理.委托的property声明用assign,是为了防止出现循环引用.

为什么delegate代理属性都是assign而不是retain.

2015-10-27
阅读 1 分钟
2.3k
这时候b和c的引用计数分别是2和1。当a不再使用b,调用release释放对b的所有权,因为c还引用了b,所以b的引用计数为1,b不会被释放。b不释放,c的引用计数就是1,c也不会被释放。从此,b和c永远留在内存中。这 种情况,必须打断循环引用,通过其他规则来维护引用关系。比如,我们常见的delegate往往是assign方式的属性而...