加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 为什么NSObject的“isMemberOfClass:class”在X

发布时间:2020-12-14 17:50:03 所属栏目:百科 来源:网络整理
导读:模糊的概述是我在NSArray类别中编写一个方法,它将接受一个Class并将一个Array过滤到属于该类成员的元素.就像是: @implementation NSArray(filter)-(NSArray*)objectsOfClass:(Class)aClass { NSMutableArray *ret = [[NSMutableArray alloc] init]; for (id
模糊的概述是我在NSArray类别中编写一个方法,它将接受一个Class并将一个Array过滤到属于该类成员的元素.就像是:

@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修饰符吗?如果是这样,为什么?如果没有,为什么不呢?

谢谢!

解决方法

在没有明确的所有权资格的情况下,可以推断出一个;这通常是__strong但是在Class的情况下它是__unsafe_unretained.这是有道理的,因为Class对象是不朽的,不需要由代码管理内存.

所以Xcode只是隐式显式,你不需要自己做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读