2011-12-15 8 views
0

自分のヘッダーファイルmyDelegate.h内にあるデリゲートがある場合。次に、デリゲートプロトコルを実装するクラス(ClassOne)があります(デリゲート関数を実装しています)。次に、myDelegateのインスタンス変数を持つ別のクラス(ClassTwo)を作成します。この変数を使用して、ClassOneにある関数を呼び出すことはできますか?ここでObjective-Cデリゲートメソッドが別のクラス内にあるクラスからデリゲートメソッドを呼び出す

はコードです:

//myDelegate.h 
@protocol myDelegate <NSObject> 

- (BOOL)myFunction:(NSString*)sString; 

@end 


//ClassOne.h 
@interface ClassOne : NSObject <myDelegate> { 

} 

- (BOOL)myFunction:(NSString*)sString; 

@end 

//ClassOne.m 
#import "ClassOne.h" 
@implementation ClassOne 

- (BOOL)myFunction:(NSString*)sString 
{ 
    //do stuff 
} 

@end 


//ClassTwo.h 
#import "myDelegate.h" 
@interface ClassTwo : NSObject { 
    id<myDelegate> del; 
} 

@property (nonatomic, retain) id<myDelegate> del; 

@end 

//ClassTwo.m 
#import "ClassTwo.h" 
@implementation ClassTwo 

- (void)aFunction:(NSString*)string 
{ 
    [del myFunction:string]; 
} 

@end 
+1

クラスが既にプロトタイプを実装しているので、デリゲートメソッドをヘッダーファイルに追加する必要はありません –

答えて

0

はい、それは正確に正しいです。

myDelegateは、MyDelegateである必要があります。これは構文エラーではなく、完璧に実行されますが、標準的なobjective-Cの規則では、は決しての小文字の最初の文字で定義する必要があります。

+0

ありがとう、私は確認が必要でした。 – Mausimo

+0

記録のために、デリゲートを定義するテクニックはかなり変化してきました。プロトコルシステムはこれまでのところ柔軟性が低く、代議員にはほとんど使用されませんでした。しかし、今日では、プロトコルはすべてのタイプの代理人に使用するのに十分柔軟であり、推奨されるアプローチだと私は考えています。 –

関連する問題