繁体   English   中英

为什么使用typeof()创建一个弱引用不需要指针星号?

[英]Why does using typeof() to create a weak reference does not require a pointer asterisk?

我在搜索__weak__block之间的区别

我的旧代码是这样的:

__block GWTSDemandContactsController *safeMe = self;

[GWTSService getSuggestedContactsForDemand:self.demand success:^(NSArray *contacts) {
    safeMe.activityLoading.hidden = true;
    [safeMe setContactsForView:contacts];
} failure:^(NSError *error) {
    safeMe.activityLoading.hidden = true;
}];

然后,当我迁移到使用ARC时,我开始使用__weak ,还发现我可以使用typeof(self)

这非常简单,因此不必每次保存self引用时都写类的名称。 所以现在我的代码看起来像这样:

__weak typeof(self) safeMe = self;

但是为什么我们在这里避免* 这不是对self吗? 避免*我们在这里存储什么?

我不知道我是否想念什么,但我听不懂。

这与所有权说明符无关。 只是typeof(self)已经是一个指针,因为self的类型是“指向GWTSDemandContactsController的指针”,即GWTSDemandContactsController * 完全写出的类型包括*

指向的对象是GWTSDemandContactsController ,但是变量self是指向该对象的指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM