官方例子中的代码,
为什么不写成
两者有什么差别?
补充,这段代码是写在UIView子类的initWithFrame方法里
疑问:infoButton是一个局部变量,只出现在initWithFrame方法里,其他没有要用到的地方。
这样写,是不是一个习惯问题。
回答一
retain一下计数加1,表示我的代码需要使用这个infoButton,可能在其它地方会使用,使用完了手动release一下
目的在于避免系统autorelease掉这个button
回答二
buttonWithType是类方法,它创建的对象系统会自动释放的。
所以应该retain保持一下,等这个对象使用完了,再release就可以。
问题
仔细想了想,还有疑惑的地方。infoButton初始化的时候,不使用retain,也可以啊,
它是类方法创建的,被标记为autorelease,是不是程序结束的时候,才释放pool中的变量(就是里面的变量执行
一次release。)
如果是这样,一直到程序运行结束前,也没有任何release infoButton的地方,所以retain一下,是不是真的多余里呢?
为什么执行到列表的 numberOfRowsInSection方法,数据的retain count就少了1?