我正在使用以下代码
First.m:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registerTok) name:@"registerTok" object:nil];
[Second serviceCall:[NSString stringWithFormat:@"%@%@",BASEURL, USER_LOGIN] withParameter:parameters ofType:USER_SIGNIN];
Second.m:
+(void)serviceCall:(NSString*)url withParameter:(NSDictionary*)parameter ofType:(int)type{
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:url]];
--------------line1------------------
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
[manager POST:url parameters:parameter success:^(AFHTTPRequestOperation *operation, id responseObject) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"registerToken" object:nil userInfo:nil];---breaking101
}
上面的通知代码正在破裂。如果我写
第1行[[NSNotificationCenter defaultCenter] postNotificationName:@"registerToken" object:nil userInfo:nil];
,它正在运行。我认为这与一些对象问题有关。请帮忙。我从未使用过通知中心。
答案 0 :(得分:2)
这里有一些问题:
(NSNotification *)
,如Apple doc here POST:parameters:success:
的{{1}}方法的成功块在任意线程上执行。您可能希望在触发通知时指定要在其上执行方法的线程/队列。当您在第1行发布通知时,它会起作用,因为该通知是在当前线程上执行的。P.S。如果您仍然遇到问题,请添加您收到的错误的完整日志,然后可以更好地回答您的问题。
答案 1 :(得分:0)
您使用姓名发布通知:@" registerToken"你观察@" registerTok"通知。这两个名字必须相同
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registerTok:) name:@"registerToken" object:nil];
还要添加registerTok方法
-(void)registerTok:(NSNotification*)notification {
...
}
答案 2 :(得分:0)
我认为你没有定义选择器方法registerTok,因为它崩溃了。
-(void)registerTok:(NSNotification*)notification {
...
}