block里为什么不能操作成员变量

 我来答
执亓只
2016-11-26 · TA获得超过142个赞
知道答主
回答量:209
采纳率:0%
帮助的人:117万
展开全部
NSInteger是可以省略的:NSInteger(^myBlock)()=^(){return2;};这样写没有问题。实际上返回值的省略不是一个值得成为问题的问题,报错了你就不省略就是了--。。关于__block,一般来说,在block内只能读取在同一个作用域的变量而且没有法修改在block外定义的任何变量,此时若我们想要这些变量能够在block中被修改,就必须在前面挂上__block关键字。不过有一个限制就是传入的变量在内存中必须是一个占有固定长度内存的变量。在拥有引用计数(reference-counted)的环境中,若我们在block中引用到Objective-C的对象,在一般的情况下它将会自动增加对象的引用计数,不过若以__block为修饰词的对象,引用计数则是不受影响。如果我们在Objective-C的方法中使用block时,以下几个和内存管理的事是需要额外注意的:l若直接存取实例变量(instancevariable),self的引用计数将被加1。l若透过变量存取实例变量的值,则只变量的引用计数将被加1。实际上在ARC中,你根本不用担心上面的引用计数增加的问题,因为ARC会知道对象在什么时候引用计数加1了,ARC会帮你在适当的地方release的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式