我的协议方法没有被调用...我是obj-c编程的新手......
我有一个协议的头文件
.......... CanUpdateTime.h .....................
#import <Foundation/Foundation.h>
@protocol CanUpdateTime
-(BOOL)canUpdateTime;
@end
.............. class interface我声明我的委托变量并设置它的属性..............
#import <UIKit/UIKit.h>
#import "Currency.h"
#import "CanUpdateTime.h"
@protocol CanUpdateTime;
@interface CurrencyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource > {
Currency *currency;
UILabel *dayMonthYear;
id <CanUpdateTime> update;
}
@property (nonatomic, retain) Currency *currency;
@property (nonatomic, retain) IBOutlet UILabel *dayMonthYear;
@property (nonatomic, assign) id <CanUpdateTime> update;
........实施档案..............
-(void)viewDidLoad {
[[self update]canUpdateTime];
}
.....我放置委托方法定义的类...
@interface ExchangeRatesProvider : NSObject <NSXMLParserDelegate,CanUpdateTime> {
and so on ...
}
....实施档案..................
-(BOOL)canUpdateTime {
NSLog (@"ok");
return YES;
}
但没有任何反应......我试图传递给de update(委托)respondsToSelector方法但是 没有任何反应......我的委托方法没有回应......任何想法...... ???
P.S。对不起我的英文...感谢关注...
答案 0 :(得分:1)
在ExchangeRatesProvider
中,您应该将CurrencyViewController
的委托设置为
currencyController.update = self;
其中currencyController
是CurrencyViewController
答案 1 :(得分:0)
我最好的猜测是,您的更新变量从未填充过ExchangeRatesProvider实例。
在代码中的某个时刻,在调用[[self update] canUpdateTime]
之前,您需要在变量中放置一个符合协议的对象。
查看您的代码我认为这里缺少的是:
ExchangeRatesProvider* provider = [[ExchangeRatesProvider alloc] init];
[[self setUpdate:provider];
这些行可以在viewDidLoad的开头或init方法中。
使用[self setUpdate:nil]