iPhone - 块内方法内的变量
我们知道,如果我们希望块能够更改变量,则必须事先使用 __block 声明变量。 那样调用该块,会怎么样呢
dispatch_async(myQueue(), ^{
[self doStuff];
});
但是,如果我们像doStuff 内部的代码 ?想象一下 doStuff 使用 .h 上声明的变量或属性。这些变量/属性是否需要使用 __block 前缀声明?
we know that we have to previously declare a variable using __block if we want a block to be able to change it. But what if we call the block like
dispatch_async(myQueue(), ^{
[self doStuff];
});
is the code inside doStuff subjected to this rule? Imagine doStuff is using variables or properties declared on .h. Do these variables/properties need to be declared using the __block prefix?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为这没有多大区别。我认为我们可以使用实例方法和全局变量,就像我们在普通函数中使用它们一样。
例如:
I dont think that makes much differnce. I think we can use the instance methods ,and global variables, as we use them in normal functions.
For eg:
您不需要在任何实例变量上使用 __block 前缀来调用该方法,因为方法中使用的变量与块无关。这只是一个方法调用。
但请注意,该块将保留
self
。You don't need to use the __block prefix on any instance variable to make that method call because the variables used in the method have nothing to do with the block. It is just a method call.
But be aware that the block will retain
self
.