1

我有一个简单的委托测试,但由于某种原因它没有被调用。

我想通过delegate-(void)testAppDelegate课堂上打电话。

/// 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

/// 测试.h

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

/// 测试.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 回答