自定义代理问题

时间:2011-04-26 12:52:43

标签: iphone delegates

我的协议方法没有被调用...我是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。对不起我的英文...感谢关注...

2 个答案:

答案 0 :(得分:1)

ExchangeRatesProvider中,您应该将CurrencyViewController的委托设置为

currencyController.update = self;

其中currencyControllerCurrencyViewController

的实例

答案 1 :(得分:0)

我最好的猜测是,您的更新变量从未填充过ExchangeRatesProvider实例。 在代码中的某个时刻,在调用[[self update] canUpdateTime]之前,您需要在变量中放置一个符合协议的对象。

查看您的代码我认为这里缺少的是:

ExchangeRatesProvider* provider = [[ExchangeRatesProvider alloc] init];
[[self setUpdate:provider];

这些行可以在viewDidLoad的开头或init方法中。 使用[self setUpdate:nil]

完成后,请不要忘记释放提供程序