6

ゲッターをオーバーライドしようとしたときのこの構文は何ですか??

私は、Objective-C でプロパティがどのように機能するかについてもっと学ぼうとしているだけです。ここに私の財産があります:

@property (nonatomic, strong) UIView *myView;

ゲッターをオーバーライドしようとすると、次のヘルプが表示されます。

-(void)getMyView:(<object-type> **)buffer range:(NSRange)inRange
{

}

私はこれを使用できることを知っています:

-(UIView *)myView
{

}

しかし、前の方法が何をするのか、なぜそこにあるのかなど、私はただ興味があります。助けてくれてありがとう!

4

1 に答える 1

5

Key-Value Coding Programming Guideで説明されているように、「Getter Indexed Accessors」と呼ばれます。

ドキュメントから:

順序付けられた対多関係への読み取り専用アクセスをサポートするには、次のメソッドを実装します。

-countOf<Key>必須。これは、NSArray プリミティブ メソッドのカウントに似ています。

-objectIn<Key>AtIndex:または-<key>AtIndexes:これらのメソッドのいずれかを実装する必要があります。それらは NSArray メソッドに対応しobjectAtIndex:objectsAtIndexes:

-get<Key>:range:このメソッドの実装はオプションですが、パフォーマンスがさらに向上します。このメソッドは メソッド に対応しNSArrayますgetObjects:range:

ガイドで説明されているように、パフォーマンス上の理由からそのようなメソッドを実装できます

ベンチマークによってパフォーマンスの改善が必要であることが示された場合は、 を実装することもできます-get<Key>:range:。このアクセサーの実装は、最初のパラメーターとして指定されたバッファーに、2 番目のパラメーターで指定された範囲内にあるオブジェクトを返す必要があります。

例として

- (void)getEmployees:(Employee * __unsafe_unretained *)buffer range:(NSRange)inRange {
    // Return the objects in the specified range in the provided buffer.
    // For example, if the employees were stored in an underlying NSArray
    [self.employees getObjects:buffer range:inRange];
}
于 2013-10-30T02:53:09.690 に答える