【发布时间】:2014-10-07 22:52:44
【问题描述】:
使用weakSelf/strongSelf 模式来避免在块中创建保留循环,这段代码很常见:
typeof(self) __weak weakSelf = self;
void (^block)() = ^{
typeof(weakSelf) strongSelf = weakSelf;
// ...more code...
};
问题是,将第二个typeof(weakSelf) 更改为typeof(self) 是否会导致self 在块中被捕获?
例如:
typeof(self) __weak weakSelf = self;
void (^block)() = ^{
typeof(self) strongSelf = weakSelf; // does using typeof(self) here end up capturing self?
// ...more code...
};
如果 self 没有被捕获,是否有任何理由偏爱一种方式或另一种方式?
【问题讨论】:
标签: objective-c objective-c-blocks