ios - 使用 block 中访问 self 的方法是否安全

标签 ios objective-c objective-c-blocks

给出方法

-(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 to self.

更好的表达方式是“doSomeWork本身使用self”,以便从句子中删除“reference”一词。在 doSomeWork 内部创建的 self 没有“引用”:该方法由于是 的实例方法而“免费”引用 self类。实际引用由调用者传递给方法;当方法执行时,它被称为self,但不会创建新对象。换句话说,当您调用 [weakSelf doSomeWork] 时,您的 weakSelf 会在 doSomeWork 内变成 self,持续时间为方法调用。

关于ios - 使用 block 中访问 self 的方法是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25542720/

相关文章:

ios - Xcode 8 iOS 10 UITableView 问题 : UIImageView added from storyboard is rendering until table is scrolled

ios - UITabbar 在 iPad 和 iPhone 中的外观变化

ios - Swift:UICollectionView 页脚未显示

ios - UIScrollview 宽度与 iPhone 大小不相等

objective-c - 释放后将指针设置为零?

objective-c - NSArrayController 和特定实体

iPhone NS时区 : localTimeZone confusion

objective-c - dispatch_group_wait 永远等待

ios - 如何从swift调用 objective-c 中具有处理程序 block 的函数

iOS 后台获取和完成 block