Я пытаюсь реализовать свой собственный 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
Я не могу выполнить селектор из другого файла в iOS ⇐ IOS
Программируем под IOS
-
Anonymous
1730065087
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");
}
Подробнее здесь: [url]https://stackoverflow.com/questions/18880775/i-cant-perform-a-selector-from-another-file-in-ios[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия