---------------------------------------------------------------------------------------------------------------------------------------------------------- 官方例子中的代码, - (id)initWithFrame:(CGRect)frame viewController:(LevelViewController *)aController { self = [super initWithFrame:frame]; if (self != nil) { UIButton *infoButton = [[UIButton buttonWithType:UIButtonTypeInfoLight] retain]; …………………… } return self; } 疑问:infoButton是一个局部变量,只出现在initWithFrame方法里,其他没有要用到的地方。
问题 仔细想了想,还有疑惑的地方。infoButton初始化的时候,不使用retain,也可以啊,
它是类方法创建的,被标记为autorelease,是不是程序结束的时候,才释放pool中的变量(就是里面的变量执行一次release。) 如果是这样,一直到程序运行结束前,也没有任何release infoButton的地方,所以retain一下,是不是真的多余里呢? 为什么执行到列表的 numberOfRowsInSection方法,数据的retain count就少了1?
|
|