Objective c 为什么使用typeof()创建弱引用不需要指针星号?
我搜索了一下Objective c 为什么使用typeof()创建弱引用不需要指针星号?,objective-c,pointers,typeof,variable-types,Objective C,Pointers,Typeof,Variable Types,我搜索了一下\uuu弱和\uu块 并且发现如果我使用ARC,我应该在块中使用\uu弱引用 我的旧代码是这样的: __block GWTSDemandContactsController *safeMe = self; [GWTSService getSuggestedContactsForDemand:self.demand success:^(NSArray *contacts) { safeMe.activityLoading.hidden = true; [saf
\uuu弱
和\uu块
-
并且发现如果我使用ARC,我应该在块中使用
引用\uu弱
__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;
}];
__weak typeof(self) safeMe = self;
然后,当我迁移到使用ARC时,我开始使用\uu-weak
,并发现我可以使用typeof(self)
self
引用时都写类名。现在我的代码如下所示:
__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;
}];
__weak typeof(self) safeMe = self;
但是为什么我们要避免这里的*
?它不应该是对self
的引用吗?通过避免*
,我们在这里存储了什么
我不知道我是否遗漏了什么,但我无法理解这一点。这与所有权说明符无关。只是
typeof(self)
已经是一个指针,因为self
的类型是“指向GWTSDemandContactsController的指针”,即GWTSDemandContactsController*
。完全写出的类型包括*
指向的对象是一个
GWTSDemandContactsController
,但变量self
是指向该对象的指针。谢谢,很好的解释!我想我明白了。所以typeof(self)
就像编写GWTSDemandContactsController*
(包括*
)一样?这就是你的意思,对吗?是的,就是这样。谢谢,真不敢相信这么容易!