3

iOS アプリケーションでデリゲート オブジェクトを使用する必要があります。デリゲートを次のように宣言しました。

関数が定義されているクラスで:

@interface OOObjectCommandInterface : NSObject<OOCameraControllerDelegate>

関数を呼び出す必要があるクラス: (de .h ファイル内)

@protocol OOCameraControllerDelegate

- (void)drawFrame:(CVImageBufferRef) imageBuffer:(BOOL)flip;

@end

@interface OOCameraController : UIViewController
{
    ...    
    id<OOCameraControllerDelegate> delegate;
}

@property (nonatomic, readwrite) id<OOCameraControllerDelegate> delegate;

さらに、2 番目のクラスが初期化される場所:

_hardwareController.delegate = [OOObjectCommandInterface ocInterface];

はクラス_hardwareControllerのインスタンスです。OOCameraControllerしたがって、デリゲート オブジェクトを呼び出そうとするときは、次のようにします。

[delegate drawFrame:imageBuffer:flip];

しかし、関数は実行されません。何か案が?

PD: 私が呼び出している関数はシングルトン クラスです。そこに何か問題がありますか?

4

2 に答える 2

4

2 番目のクラスでデリゲートを self に設定しましたか? 次のような2番目のクラスでオブジェクトを作成します

@property (nonatomic, readwrite) id<OOCameraControllerDelegate> delegate;

その後[_hardwareController setDelegate:self];

于 2012-07-16T11:07:29.190 に答える
3

定義上、シングルトンは、1 回しか作成できない一意のオブジェクトにアクセスするための設計パトロンです (最初に get_instance を実行します)。get_instance を使えば、どこからでもシングルトン内の関数にアクセスできるのに、なぜ直接使わないのですか?

[[MySingletonClass get_instance] FunctionThatIWantToUse:...]; のように記述します。そして、デリゲートを使用しないでください

于 2012-07-16T11:15:29.353 に答える