2011-04-26 3 views
1
내 프로토콜 메소드가 호출되지 않습니다

... 난 사용자 위임 문제

내가 프로토콜

에 대한 헤더 파일을 가지고 ... OBJ-C 프로그래밍의 새로운이야 ....... ... CanUpdateTime.h .....................

#import <Foundation/Foundation.h> 

@protocol CanUpdateTime 

-(BOOL)canUpdateTime; 

@end 

.............. 클래스 인터페이스 여기서 대리자 변수를 선언하고 속성을 설정합니다 ..............

#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; 
,210

........ 구현 파일 ..............

-(void)viewDidLoad { 

    [[self update]canUpdateTime]; 
} 

..... 내가 위임 방법의 정의를 둔 클래스 .. .

@interface ExchangeRatesProvider : NSObject <NSXMLParserDelegate,CanUpdateTime> { 

and so on ... 

} 

.... 구현 파일 ..................

-(BOOL)canUpdateTime { 


    NSLog (@"ok"); 

     return YES; 
} 

아무것도하지만 난에 전달하려고 ... 일 업데이트 (대리자) respondsToSelector 메서드가 있지만 아무 일도 발생하지 않습니다 ... 내 대리자 메서드를 마십시오 esnt ... 어떤 생각이라도 응답한다. .. ???

p.s. ... 관심을 끌기 위해 내 영어 ... 감사합니다 죄송합니다 당신이 currencyController 내 추측이 있다는 것입니다 CurrencyViewController

+0

중복으로 완료하면 가 공급자를 해제하는 것을 잊지 마세요 http://stackoverflow.com/questions/5675711/custom-delegate –

답변

0

의 인스턴스 인 경우 CurrencyViewController

currencyController.update = self; 

로의 위임을 설정해야 ExchangeRatesProvider에서

+0

당신에게 하나님 감사합니다 ... 당신은 그것을 알아 내기 나를 위해 ... 다시 또 다시, 감사합니다 ... –

+0

당신은 환영합니다. – mbritto

1

업데이트 변수가 ExchangeRatesProvider 인스턴스로 채워지지 않았습니다. 코드의 어느 시점에서 [[self update] canUpdateTime]을 호출하기 전에 프로토콜에 맞는 객체를 변수에 넣어야합니다.

코드를 보면 내가 여기에 누락 된 선이 생각 :

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

이 라인이있는 viewDidLoad의 시작 또는 init 메소드에있을 수 있습니다. 당신이의 [self setUpdate:nil]