让我们看看你们是否可以在这里找到错误......因为我现在真的被卡住了。
数据库管理器.h
@protocol DBManagerDelegate <NSObject>
@optional
- (void) managerDidFinishUpdating:(id)controller;
@end
@interface DBManager : NSObject
@property (strong, nonatomic) id <DBManagerDelegate> delegate;
- (id) init;
@end
数据库管理器.m
#import "DBManager.h"
@implementation DBManager
- (id)init {
self = [super init];
if (self) {
[[self delegate] managerDidFinishUpdating:self];
}
return self;
}
UIViewController.h
#import <UIKit/UIKit.h>
#import "DBManager.h"
@interface DBViewController : UIViewController <DBManagerDelegate>
@property (nonatomic, retain) DBManager *manager;
@end
UIViewController.m
#import "DBViewController.h"
@implementation DBViewController
- (void)viewDidLoad
{
[super viewDidLoad];
_manager = [[DBMataroManager alloc] init];
[_manager setDelegate:self];
}
- (void)managerDidFinishUpdating:(id)controller {
NSLog(@"Manager did finish");
}
@end
最佳答案
You should write like this,
- (id)initWithDelegate:(id)delegate {
self = [super init];
if (self) {
_delegate = delegate;
[_delegate managerDidFinishUpdating:self];
}
return self;
}
//Call it as follow
_manager = [[DBManager alloc] initWithDelegate:self];
[_manager setDelegate:self];
关于ios - 简单的自定义委托(delegate)没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20491762/