2016-03-30 1 views
0

私はオブザーバパターンコードをC++で持っています。ここにコードと非常に似た何か:Observer patternどうすればviewcontrollerをC++で書かれたサブジェクトのオブザーバにすることができます

ViewControllerまたはobjective-CクラスをC++で書かれたサブジェクトのオブザーバーにするにはどうすればよいですか?任意のコード例では高く評価され

乾杯

+0

[オブジェクティブC++](https://en.wikipedia.org/wiki/Objective-C#Objective-C.2B.2B) – Leandros

+0

Iは客観的C++を理解します。しかし、私のviewcontroller.hは、C++ヘッダーで定義されたIObserverから継承することはできませんか? – pdiddy

+0

いいえ、できません。プロキシオブジェクト(Objective-Cで)またはプロキシクラス(C++で)を作成し、適切な関数を手動で呼び出す必要があります。 – Leandros

答えて

1

どちらのObjective-C++、またC++が相互に継承することができ、あなたは、互いに相互作用するためのプロキシクラスを作成する必要があります。

Objective-C++からC++メソッドを呼び出す場合の小さな例です。

class Foo : public IObserver { 
    virtual void bar(int i) { printf("i is %d\n", i); } override; 
}; 

@interface Baz : NSObject { 
@public 
    void* foo; 
} 
@end 

@implementation Baz 
- (id)init { 
    self = [super init]; 
    if (self) { 
     foo = new Foo(); 
    } 
    return self; 
} 

- (void)dealloc { 
    delete foo; 
    [super dealloc]; 
} 

- (void)barHappened:(int)i { 
    foo->bar(i); 
} 
@end 
関連する問題