首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__weak类型(自我) weakSelf =自我或__weak MyObject *弱自=自我?

__weak类型(自我) weakSelf =自我或__weak MyObject *弱自=自我?
EN

Stack Overflow用户
提问于 2016-04-01 19:55:17
回答 3查看 1.9K关注 0票数 2

在这里使用什么更好?为什么?

代码语言:javascript
复制
__weak typeof(self) weakSelf = self;

代码语言:javascript
复制
__weak MyObject *weakSelf = self;

显然,__weak id weakSelf = self;是最不理想的,因为我们不会得到类型检查,对吗?

不过,在前两次.哪一个是可取的,为什么呢?

另外,如果clang支持使用typeof of,那么是否有理由使用__typeof而不是typeof of?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-01 20:20:56

我最近开始这样写:

代码语言:javascript
复制
__typeof(self) __weak weakSelf = self;

使用__typeof版本可以让您使用代码片段,这样它就更快了,而且在整个代码中也是一致的。

这不是常见的形式,因为大多数人将__weak变量限定符放在开头,但是根据这里的文档:https://developer.apple.com/library/mac/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html变量限定符位于类型之后。

一旦进入街区,我就使用:

代码语言:javascript
复制
__typeof(weakSelf) __strong strongSelf = weakSelf;
if (!strongSelf) return;

再次获得强有力的引用。

这两种代码都是代码片段,所以我实际上不需要做太多的输入,或者必须记住确切的语法。

票数 3
EN

Stack Overflow用户

发布于 2016-04-01 20:03:36

第一种方法更方便,因为不管类如何,代码都是相同的。您可以使用Xcode代码段插入typeof-using行代码,只需较少的击键。如果您更改了类的名称,所要做的工作也较少。

我不知道使用typeof-version有什么坏处,只是可能有点难以理解。

, your code will compile regardless of the compiler's dialect setting.

票数 1
EN

Stack Overflow用户

发布于 2016-04-01 20:10:43

正如您可能知道的那样,__typeof__()“扩展”到参数的具体类型。如果参数是self,而self的具体类型是MyObject (这就是您的情况),那么它就是相同的。

因此,第一种形式只是另一种间接形式,它通常具有间接的优点和缺点:

  • 间接形式是更灵活的,因为间接跟随变化。
  • 间接形式的可读性较低,因为读者必须理解他脑海中的间接。

就我个人而言,我更喜欢第二种形式。但更重要的是:就我个人而言,我宁愿把时间浪费在更重要的问题上。;-)

你会写:

代码语言:javascript
复制
__typeof__(self) copy = [self copy];

我不会的。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36364796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档