Я не могу выполнить селектор из другого файла в iOSIOS

Программируем под IOS
Ответить
Anonymous
 Я не могу выполнить селектор из другого файла в iOS

Сообщение Anonymous »

Я пытаюсь реализовать свой собственный API в iOS, но у меня есть одна проблема с обратными вызовами.
Я реализовал свои обратные вызовы с помощью селекторов, но когда заданная функция находится в другом файле /class, приложение выходит из строя.
Это ошибка:
2013-09-18 21:32:16.278 Vuqio[6498:19703] -[VuqioApi postCurrenProgramRequestDidEnd]: unrecognized selector sent to instance 0xa5a2150
2013-09-18 21:32:16.278 Vuqio[6498:19703] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[VuqioApi postCurrenProgramRequestDidEnd]: unrecognized selector sent to instance 0xa5a2150'

Это мой код:
Вызов: (File Controller.m)
...
[self softCheckIn:@"922337065874264868506e30fda-1c2a-40a5-944e-1a2a13e95e95" inProgram:p.idProgram callback:@selector(postCurrenProgramRequestDidEnd)];
...
-(void)postCurrenProgramRequestDidEnd
{
NSLog(@"Soft check-in");
}

- (void)softCheckIn:(NSString *)userId inProgram:(NSString *)program callback:(SEL)callback
{
// Hacemos un soft checkin
VuqioApi *api = [[VuqioApi alloc] init];
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
userId, @"userId",
program, @"programId",
nil];
[api postCurrentProgram:data withSuccess:callback andFailure:@selector(aaa)];
}

Методы: (файл Api.m)
- (void)postCurrentProgram:(NSDictionary *)data withSuccess:(SEL)successCallback
{
NSLog(@"Performing selector: %@", NSStringFromSelector(successCallback));

[self postCurrentProgram:data withSuccess:successCallback andFailure:@selector(defaultFailureCallback)];
}
- (void) postCurrentProgram:(NSDictionary *)data withSuccess:(SEL)successCallback andFailure:(SEL)failureCallback {
[self placePostRequest:@"api/programcurrent" withData:data withHandler:^(NSURLResponse *urlResponse, NSData *rawData, NSError *error) {

NSLog(@"Performing selector: %@", NSStringFromSelector(successCallback));
NSLog(@"Performing selector: %@", NSStringFromSelector(failureCallback));

NSString *string = [[NSString alloc] initWithData:rawData encoding:NSUTF8StringEncoding];
//NSDictionary *json = [NSJSONSerialization JSONObjectWithData:rawData options:0 error:nil];

if ( ![string isEqual: @"ok"])
{
[self performSelector:failureCallback withObject:self];
} else {
NSLog(@"OK");
[self performSelector:successCallback];
}
}];
}

- (void) defaultFailureCallback {
NSLog(@"Failure");
}


Подробнее здесь: https://stackoverflow.com/questions/188 ... ile-in-ios
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»