ios工程在ARC下怎么延长局部变量的生命周期?

ljllliiinnn 发布于 2014/04/05 11:36
阅读 1K+
收藏 0

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

问题一:

在学习ios开发,遇到这样的问题。

片段一:
UIGestureRecognizer *scaler = [[UIGestureRecognizer alloc] initWithTarget:self.faceView action:@selector(pinch:)];
[self.faceView addGestureRecognizer:scaler];

    
片段二:
[self.faceView addGestureRecognizer:[[UIPinchGestureRecognizer alloc] initWithTarget:self.faceView action:@selector(pinch:)]];



片段一不能正常工作,片段二可以,我猜测是addGestureRecognizer函数不能strong地保持一个很快被释放的局部变量指向的对象。

问题二:

    想要不使用storyboard,纯代码创建视图,如果要创建一堆Button,是不是用NSMutableArry来存比较好,这时会出现上面的问题,我如果先用UIButton*变量alloc init出来按钮再add到array里,结果array最后是空的。如何解决呢?

加载中
0
开源中国首席投资人
开源中国首席投资人

问题一:你必须这样写:

UIPinchGestureRecognizer *scaler = [[UIPinchGestureRecognizer alloc] initWithTarget:self.faceView action:@selector(pinch:)];
3 [self.faceView addGestureRecognizer:scaler];

ljllliiinnn
ljllliiinnn
非常感谢,按你说的改正以后就工作了,是我写的时候随便点了代码不全,没仔细看。
0
开源中国首席投资人
开源中国首席投资人

问题二:NSMutableArray必须先初始化。而且不建议将Button放在Array中。

ljllliiinnn
ljllliiinnn
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
开源中国首席投资人
开源中国首席投资人

如果使用UIGestureRecognizer 而不是 UIPinchGestureRecognizer ,还需要添加其他代码,或者子类化UIGestureRecognizer 。


结论:

该问题和ARC无关。

0
开源中国首席投资人
开源中国首席投资人
是alloc + init。你可以放在数组中。我觉得不用变量,不放数组也是可以的。直接addsubview就可以了。
0
开源中国首席投资人
开源中国首席投资人
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
开源中国首席投资人
开源中国首席投资人
不管怎么都是可以的,按自己的习惯来,哈哈。
ljllliiinnn
ljllliiinnn
可以认识一下吗,我给你邮箱zhangningworks@gmail.com发邮件了。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部