2012-07-19 56 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; 

} 

在上面的最后行,你可以看到我发送给saveLoginInfo其中在ClientService.h这是在这个文件中导入声明clientService。

-(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

是否'clientService'领域存在呢,还是'nil'?(尝试登录只是调用之前,如' NSLog(@“clientService =%@”,clientService);'。)在Objective-C中,发送到“nil”值的消息根本不起任何作用。 – 2012-07-19 07:48:42

回答

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; 
} 

(请确保您还在dealloc方法释放实例。

+0

他甚至可以使用延迟初始化,但让getter实例化变量if它是无 – 2012-07-19 08:05:12

+0

忘了提及... Backendservice(类im调用)或多或少是函数库,它没有视图,我也找不到init方法 – Tom 2012-07-19 08:07:26

+0

init是一个方法在NSObj中声明等。假设你的Backendservice是NSObject的一个子类,你可以在你的类中覆盖init。我将编辑答案举个例子。 – 2012-07-19 08:08:58