1

簡単なデリゲートテストがありますが、何らかの理由で呼び出されません。

デリゲートを介してクラス-(void)testから呼び出したい。AppDelegate

/// AppDelegate.h

#import <Cocoa/Cocoa.h>
@protocol AppDelegateDelegate
@required
-(void)test;
@end
@interface AppDelegate : NSObject <NSApplicationDelegate> {
    id<AppDelegateDelegate> _delegate;
}
@property(nonatomic, retain) id<AppDelegateDelegate> delegate;
@end

/// AppDelegate.m

#import "AppDelegate.h"
@implementation AppDelegate
@synthesize delegate = _delegate;
-(void)awakeFromNib {
    [_delegate test];
}
@end

/// test.h

#import <Foundation/Foundation.h>
#import "AppDelegate.h"
@interface test : NSObject <AppDelegateDelegate>
-(void)test;
@end

/// test.m

#import "test.h"
@implementation test
-(void)test {
    //this should be called from AppDelegate
    NSLog(@"delegate test");
}
@end
4

1 に答える 1

0

クラスがロードされ、他のクラスが自分自身をデリゲートとして設定する機会がないとtestすぐに、デリゲート メソッドを呼び出しています。別のクラスが自分自身をデリゲートとして設定する機会があったAppDelegate、デリゲート メソッドを呼び出す必要があります。

また、デリゲート プロパティは次のように定義する必要があります。

@property (assign) IBOutlet id <AppDelegateDelegate> delegate;
于 2012-07-28T08:45:43.920 に答える