0

クラスメソッドでデリゲートを呼び出したい。

デリゲートはクラス メソッド内でアクセスされるインスタンス変数であるため、以下の例は明らかに機能しません。(エラー: クラス メソッドでアクセスされたインスタンス変数 'delegate')

アラートネイティブはありますか?

私のヘッダーファイル:

//  MyClass.h

#import <Foundation/Foundation.h>

@protocol MyDelegate <NSObject>

-(void)update;

@end

@interface MyClass : NSObject
{
    id<MyDelegate> delegate;
}
@property (nonatomic, retain) id delegate;

+(void)methodThatInvokesDelegate;
@end

私の実装ファイル:

//  MyClass.m
#import "MyClass.h"

 @implementation MyClass
 @synthesize delegate;

+(void)methodThatInvokesDelegate{
[delegate update];
 }

 @end
4

3 に答える 3

3

3 つの明白なオプション:

  • シングルトン
  • デリゲートを指す静的変数 (つまり、クラス変数)
  • デリゲートではなく NSNotification を使用する

シングルトン (および静的変数) はデリゲートのライフサイクルを追跡できないため、オプション 3 が最もクリーンであると思います。

于 2013-05-29T11:50:26.080 に答える