【发布时间】:2016-04-20 03:58:16
【问题描述】:
示例(在我的视图控制器中):
RESTApi.fetchUser() { [weak self] Void in
if self != nil { //the view controller is still here.
self!.items.append(stuff)
self!.whatever
}
}
我注意到我立即使用if self != nil,然后到处使用self!。有没有更好的办法?我觉得这违反了 Swift 的方式。
注意:我使用 [weak self] 因为我的 ViewController 可能为零(如果用户在 REST Api 下载数据之前返回)。
【问题讨论】:
-
不会自己被捕获,所以如果用户在 REST API 完成之前返回也没关系?
-
我不确定。当涉及到 ViewControllers 时,我总是使用 [weak self]。其他人可以对此发表评论吗?
-
这似乎是一种常见的模式。我认为如果你不让它变弱,被捕获的自我可能会引入一个引用循环并搞乱内存管理。
标签: swift