漠然とした概要は、そのクラスのメンバーである要素に配列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
すっごく、それが邪魔にならないように、私の質問に移ります。NSObject.hは、isMemberOfClass:に次の署名があることを示しています。
-(BOOL)isMemberOfClass:(Class)aClass;
このメソッドをXCodeに入力すると、オートコンプリートは次のようなメソッドシグネチャを示唆します。
[self isMemberOfClass:(__unsafe_unretained Class)]
私の質問は次のとおりです。
1)NSObject.hのメソッドプロトタイプとXCodeのオートコンプリートの間に不一致があるのはなぜですか?
2)私自身の方法(この質問の冒頭に示されています)に、__unsafe_unretained
修飾子を含める必要がありますか?もしそうなら、なぜですか?そうでない場合は、なぜですか?
ありがとう!