1

これを使用してバインドするにはどうすればよいですMonoTouchか??

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 60000
@interface NSObject (SubscriptingSupport)

- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
- (id)objectForKeyedSubscript:(id)key;

@end
#endif

この次のドキュメントを試しましたが、うまくいきませんでした

[BaseType (typeof (NSObject)), Bind ("NSObject")]
public interface NSObject2 
{
    [Bind("objectAtIndexedSubscript:")]
    NSObject ObjectAtIndexedSubscript (uint idx);

    [Bind("setObject:atIndexedSubscript:")]
    void SetObjectAtIndexedSubscript (NSObject obj, uint idx);

    [Bind("setObject:forKeyedSubscript:")]
    void SetObjectForKeyedSubscript (NSObject obj, NSObject key);

    [Bind("objectForKeyedSubscript:")]
    NSObject ObjectForKeyedSubscript (NSObject key);
}

次のような大量のエラーが発生します

エラー CS0115: `DocParser.Dispose(bool)' はオーバーライドとしてマークされていますが、オーバーライドする適切なメソッドが見つかりません (CS0115)

前もって感謝します

アレックス。

4

2 に答える 2

1

バインディング ツールは、コア クラスへの拡張用のスタブの生成をサポートしていません。

良いニュースは、基本的に作業が非常に単純であることです。インスタンス NSObject のオブジェクトにメッセージを送信する必要があります。

これは、次のようなコードを手動で記述できることを意味します。

 void GetObjectAtIndex (NSObject target, int objectAt)
 {
     Runtime.GetNSObject (Messaging.objc_msgSend_int (target.Handle, Selector.GetHandle ("objectAtIndexedSubscript:", objectAt));
 }

上記を手動で記述するのは面倒なので、架空のクラスでジェネレーターを実行してから、上記のようにパラメーター「NSObject target」を受け取る独自のクラスに結果をコピー アンド ペーストできます。

于 2012-08-26T02:28:31.703 に答える
0

次の名前空間以外に別の名前空間がある限り、クラス名を同じに保つ必要があると思いますMonoTouch.Foundation

namespace WhateverNamespaceYouWantBesidesMonoTouch.Foundation
{
  [BaseType (typeof (MonoTouch.Foundation.NSObject))]
  public interface NSObject
  {
    [Export("objectAtIndexedSubscript:")]
    MonoTouch.Foundation.NSObject ObjectAtIndexedSubscript (uint idx);

    [Export("setObject:atIndexedSubscript:")]
    void SetObjectAtIndexedSubscript (MonoTouch.Foundation.NSObject obj, uint idx);

    [Export("setObject:forKeyedSubscript:")]
    void SetObjectForKeyedSubscript (MonoTouch.Foundation.NSObject obj, MonoTouch.Foundation.NSObject key);

    [Export("objectForKeyedSubscript:")]
    MonoTouch.Foundation.NSObject ObjectForKeyedSubscript (MonoTouch.Foundation.NSObject key);
  }
}

[Bind]の機能もわかりません。代わりに、[Export]を使用する必要があります。

于 2012-08-25T23:23:30.393 に答える