给出方法
-(void) doSomeWork
{
self.abc = ...
self.doreme=...
}
在 block 内使用 doSomeWork
安全吗?如
[weakSelf doSomeWork];//this is inside a block
当然,我担心的是 doSomeWork
本身对 self 有一些引用。
最佳答案
是的,在带有 weakSelf
的 block 内使用 doSomeWork
是完全安全的。
Of course my concern is the fact that
doSomeWork
itself has some reference toself
.
更好的表达方式是“doSomeWork
本身使用self
”,以便从句子中删除“reference”一词。在 doSomeWork
内部创建的 self
没有“引用”:该方法由于是 的实例方法而“免费”引用 self
类。实际引用由调用者传递给方法;当方法执行时,它被称为self
,但不会创建新对象。换句话说,当您调用 [weakSelf doSomeWork]
时,您的 weakSelf
会在 doSomeWork
内变成 self
,持续时间为方法调用。
关于ios - 使用 block 中访问 self 的方法是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25542720/