KVC ガイドに従って、モデル クラスのインデックス付きアクセサー メソッドを Python で実装しようとしています。オプションの ranged メソッドを使用して、パフォーマンス上の理由から一度に複数のオブジェクトをロードしたいと考えています。このメソッドは、メソッドがオブジェクトをコピーする必要がある C 配列バッファーへのポインターを受け取ります。次のようなことを試しましたが、うまくいきません。どうすればこれを達成できますか?
@objc.accessor # i've also tried @objc.signature('v@:o^@')
def getFoos_range_(self, range):
return self._some_array[range.location:range.location + range.length]
編集: Appleがすべてのドキュメントを移動した後、私は最終的に型エンコーディングの参照を見つけました。それを読んだ後、私はこれを試しました:
@objc.signature('v@:N^@@')
def getFoos_range_(self, buf, range):
しかし、これもうまくいかないようでした。最初の引数は C 配列へのポインターであるはずですが、長さは実行時まで不明であるため、正しい型エンコーディングを構築する方法が正確にはわかりませんでした。私は'v@:N^[1000@]@'
ただ見ようとしましたが、それもうまくいきませんでした。
モデル オブジェクトは、テーブル ビューを駆動する NSArrayController の contentArray にバインドされています。おそらく、ブリッジが提供している署名とは異なる署名を期待しているため、このメソッドをまったく呼び出していないようです。助言がありますか?