为什么NSObject中的“isMemberOfClass:类”的Xcode的自动完成指定__uns

2019-07-18 01:07发布

模糊概述是我正在写在一个方法NSArray类别,将采取一Class和过滤器阵列下降到属于该类别的成员的元件。 就像是:

@implementation NSArray(filter)
-(NSArray*)objectsOfClass:(Class)aClass {
   NSMutableArray *ret = [[NSMutableArray alloc] init];   
   for (id obj in self)
       if ([obj isMemberOfClass:aClass])
          [ret addObject:obj];

   return [NSArray arrayWithArray:ret];
}
@end

SOOO,有了这样的方式,在我的问题。 NSObject.h表明isMemberOfClass:具有以下特征:

 -(BOOL)isMemberOfClass:(Class)aClass;

当我输入的XCode这种方法中,自动完成提示,看起来像一个方法签名:

 [self isMemberOfClass:(__unsafe_unretained Class)]

我的问题是:

1)为什么在NSObject.h和Xcode的自动完成的方法原型之间的差异?
2)在我自己的方法(在这个问题的开始所示),我应该包括__unsafe_unretained修改? 如果是这样,为什么? 如果不是,为什么不呢?

谢谢!

Answer 1:

在没有明确的所有权资格之一是推断; 这通常__strong ,但在案件Class__unsafe_unretained 。 这是有道理的Class对象是不朽的,不需要内存代码管理。

所以Xcode的只是把隐性显性和你不需要这个做自己。



文章来源: Why does NSObject's “isMemberOfClass:class” specify __unsafe_unretained in XCode's autocompletion?