4

追加の変数を作成せずに (getter ではなく) ドット表記を使用して特定のプロパティにアクセスしたい場合、NSArray 内のオブジェクトを自分の型にキャストすることがよくあります。

object-c にどのクラスのオブジェクトを NSArray に保存するかを伝えるためのクールな機能やトリックはありますか?これにより、コンパイラは配列内のオブジェクトを ID ではなく、私のタイプであると見なします。

4

3 に答える 3

6

あなたが次のようなことをしていることを意味する場合:

x = ((MyClass *)[myArray objectAtIndex:2]).property1;

読みやすくするために、2 行に分割できます。

MyClass *myObject = [myArray objectAtIndex:2]
x = myObject.property1;

最初のケースに本当に設定されている場合はNSArray、タイプのアクセサーを持つカテゴリを作成できます。

@implementation NSArray (MyCategory)

- (MyClass *)myClassObjectAtIndex:(NSUInteger)index
{
   return [self objectAtIndex:index];
}

@end

そして、あなたはそれを好きなように使うことができます:

x = [myArray myClassObjectAtIndex:2].property1;
于 2013-09-01T00:52:01.433 に答える