相关疑难解决方法(0)

"__block"关键字是什么意思?

__blockObjective-C 中的关键字究竟是什么意思?我知道它允许你修改块内的变量,但我想知道......

  1. 它究竟是什么告诉编译器的?
  2. 它还有什么用吗?
  3. 如果就是这样,那么为什么首先需要呢?
  4. 是在任何地方的文档?(我找不到).

objective-c ios objective-c-blocks

435
推荐指数
5
解决办法
10万
查看次数

使用块保留`self`循环

我担心这个问题非常基本,但我认为这与很多进入数据块的Objective-C程序员有关.

我听到的是,由于块捕获作为const副本在其中引用的局部变量self,因此如果要复制该块,则在块内使用可能会导致保留周期.因此,我们应该使用__block强制块直接处理self而不是复制它.

__block typeof(self) bself = self;
[someObject messageWithBlock:^{ [bself doSomething]; }];
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

[someObject messageWithBlock:^{ [self doSomething]; }];
Run Code Online (Sandbox Code Playgroud)

我想知道的是:如果这是真的,有没有办法可以避免丑陋(除了使用GC)?

memory-management objective-c objective-c-blocks

166
推荐指数
5
解决办法
6万
查看次数