在这里使用什么更好?为什么?
__weak typeof(self) weakSelf = self;或
__weak MyObject *weakSelf = self;显然,__weak id weakSelf = self;是最不理想的,因为我们不会得到类型检查,对吗?
不过,在前两次.哪一个是可取的,为什么呢?
另外,如果clang支持使用typeof of,那么是否有理由使用__typeof而不是typeof of?
发布于 2016-04-01 20:20:56
我最近开始这样写:
__typeof(self) __weak weakSelf = self;使用__typeof版本可以让您使用代码片段,这样它就更快了,而且在整个代码中也是一致的。
这不是常见的形式,因为大多数人将__weak变量限定符放在开头,但是根据这里的文档:https://developer.apple.com/library/mac/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html变量限定符位于类型之后。
一旦进入街区,我就使用:
__typeof(weakSelf) __strong strongSelf = weakSelf;
if (!strongSelf) return;再次获得强有力的引用。
这两种代码都是代码片段,所以我实际上不需要做太多的输入,或者必须记住确切的语法。
发布于 2016-04-01 20:03:36
第一种方法更方便,因为不管类如何,代码都是相同的。您可以使用Xcode代码段插入typeof-using行代码,只需较少的击键。如果您更改了类的名称,所要做的工作也较少。
我不知道使用typeof-version有什么坏处,只是可能有点难以理解。
, your code will compile regardless of the compiler's dialect setting.
发布于 2016-04-01 20:10:43
正如您可能知道的那样,__typeof__()“扩展”到参数的具体类型。如果参数是self,而self的具体类型是MyObject (这就是您的情况),那么它就是相同的。
因此,第一种形式只是另一种间接形式,它通常具有间接的优点和缺点:
就我个人而言,我更喜欢第二种形式。但更重要的是:就我个人而言,我宁愿把时间浪费在更重要的问题上。;-)
你会写:
__typeof__(self) copy = [self copy];我不会的。
https://stackoverflow.com/questions/36364796
复制相似问题