Iphone 委托对象未调用协议方法

Iphone 委托对象未调用协议方法,iphone,objective-c,ios,xcode,delegates,Iphone,Objective C,Ios,Xcode,Delegates,协议方法没有被调用的另一个例子-不知道我在这里做错了什么 这是代码,省略了不必要的信息 第一个头文件:AccessNumber.h @protocol AddItemDelegate <NSObject> @required - (void) processSuccessful: (BOOL)success; @end @interface AccessNumber : UIViewController <UITableViewDelegate, UITableViewDat

协议方法没有被调用的另一个例子-不知道我在这里做错了什么

这是代码,省略了不必要的信息

第一个头文件:AccessNumber.h

@protocol AddItemDelegate <NSObject>
@required
- (void) processSuccessful: (BOOL)success;
@end

@interface AccessNumber : UIViewController <UITableViewDelegate, UITableViewDataSource, ABPeoplePickerNavigationControllerDelegate, UIAlertViewDelegate> {

id <AddItemDelegate> delegate;

}
@property (retain) id <AddItemDelegate> delegate;
@end
第二个文件头:History.h

@interface History : UIViewController <UITableViewDelegate, UITableViewDataSource, AddItemDelegate> {
 ....
    }

谢谢你的帮助。谢谢

在一些非常严重的情况下,您应该保留一个代理,通常您的delagate将比对象更长寿。因此,请将属性从保留更改为分配。并确保您正在设置代理。你在哪里做?如果你的对象真的依赖于它,你应该在构造函数中传递它(iniWithDelagate)。在调用delagate方法之前尝试执行NSLog,看看它是否为nil。

在代码中,我没有看到类似以下内容:

theAccessNumber.delegate = self;
必须将历史记录实例设置为AccessNumber实例的委托属性


问候。

代码似乎有点滑稽,但您没有告诉“AccessNumber”类谁是他的代理,即使您正在使“History”类实现您自己建立的协议(否则您将收到警告)

从“AccessNumber.m”中设置“AccessNumber”类时,必须像这样设置该类的委托:

或者像这样在“History.m”中设置它:


我发布的代码应该在History.m中的某个地方,可能在init或viewDidLoad,这取决于您。
- (void) processSuccessful: (BOOL)success {

NSLog(@"SUCCESS");
}
theAccessNumber.delegate = self;
self.delegate = historyInstance;
accessNumberInstance.delegate = self;