2012-07-19 3 views
0

저는 처음 보았을 때 처음 보던 실수 일 수 있습니다. 문제는 내가 메시지를 메서드에 보낼 때 연결되지 않는다는 것입니다.메시지가 메서드에 연결되지 않음

-(BOOL) login:(LoginInfo *) info{ 

NSString *url = [NSString stringWithFormat:@"%@/%@?name=%@&password=%@", FAMORABLE_API_URL,FAMORABLE_API_ACTION_LOGIN, info.username, info.password]; 

NSDictionary* json = [self getJson:url]; 
NSString *token = [json objectForKey:@"Token"]; 

NSLog(@"results: %@", token); 

LoginInfo *loginResult = [LoginInfo alloc]; 
loginResult.token = token; 
//TODO 
NSLog(@"test 1 %@", loginResult.token); 
    [clientService saveLoginInfo:loginResult]; 

return YES; 

} 

마지막으로 위의 줄에 당신은 내가이 파일에 가져 ClientService.h에 선언 clientService에 saveLoginInfo에 보내고있다 볼 수 있습니다

여기에 호출하는 방법입니다.

-(void) saveLoginInfo:(LoginInfo *)info{ 
NSLog(@"test 2 %@", info); 
NSLog(@"test 3%@", info.token); 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 


[defaults setObject:info.token forKey:KEY_TOKEN]; 
NSString *string = [defaults stringForKey:KEY_TOKEN]; 
NSLog(@"test 4%@", string); 
// save it 
[defaults synchronize]; 


if (!(info.token)){ 
    self.currentUser = nil; 
    self.isLoggedOn=false; 
}else{ 
    self.currentUser = info; 
    self.isLoggedOn=true; 
}  
} 

이것은 호출되는 메소드입니다. 나는 하나의 잘못을 범한 경우 대다수의 로그를 꺼내지 만 어느 누구도 처형되지 않습니다 ...

잘못된 정보가 있습니까? 사전 톰의

덕분에

+0

을 존재 확인, 아니면'nil'? (로그온을 시도 단지 호출하기 전에, 예를 들어' Objective-C에서'nil' 값으로 보내진 메시지는 아무것도하지 않습니다. –

답변

0

라인 [clientService saveLoginInfo:loginResult]; 클래스의 인스턴스 변수에 clientService인가?

그렇다면 호출하기 전에 개체를 어딘가에 인스턴스화했는지 확인하십시오. (클래스의 init 방법 중 하나이거나 UIViewController 인 경우 viewDidLoad)

예.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    clientService = [[MyClientService alloc] init]; 
} 

- (id)init { 
    self = [super init]; 
    if (self) { 
     clientService = [[MyClientService alloc] init]; 
    } 
    return self; 
} 

(은`clientService` 필드가 아직 없습니다. 당신은 또한 dealloc 방법으로 인스턴스를 해제해야합니다

+0

그는 게으른 초기화를 사용할 수도 있지만 getter가 변수를 인스턴스화하도록 만들 수도 있습니다 if ("clientService = % @", clientService) –

+0

Backendservice (클래스 메신저 호출)는 다소간 함수 라이브러리이며, 뷰가 없으며 init 메소드도 찾을 수 없습니다. – Tom

+0

init은 a입니다. NSObj에서 선언 된 메서드 ect. 백엔드 서비스가 NSObject의 서브 클래스라고 가정하면 클래스의 init을 오버라이드 할 수 있습니다. 예를 들어 답을 편집하겠습니다. –

관련 문제