Процесс:Набор NSObject свойство - EXC_BAD_ACCESS
- приложение на контроллере домашнего просмотра и запрашивает данные по API, чтобы установить свойство NSObject. Запрос обрабатывается по частному методу.
- пользователя изменить контроллер представления на второй контроллер представления (запрос еще обрабатывается асинхронно)
- Второго контроллер вида загружен
- Запроса окончание и возврат приложения EXC_BAD_ACCESS, когда он устанавливая свойство объекта
Кажется, что объект не имеет правильного доступа к памяти.
Я бы хотел, чтобы пользователь мог переключать контроллер просмотра, даже если есть ожидающий запрос, и приложение не сбой.
Я не хочу блокировать пользователя на контроллере представления во время загрузки.
user.h
@interface User : NSObject
[...]
@property (nonatomic) NSString *notification;
[...]
-(void) methodName;
@end
User.m
-(void) methodName{
//there is code around but useless for this problem
[...]
NSError *error;
NSMutableDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
self.notification = [[dict objectForKey:@"infos"] objectForKey:@"notification"]; //Here is the EXC_BAD_ACCESS
[...]
}
MyController.m
@interface MyController()
@end
User *user;
@implementation HomeCVViewController
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:YES];
user = [User new];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[user someMethod];
dispatch_async(dispatch_get_main_queue(), ^{
[...]//some code
});
});
}
@end
EDIT:
Я просто положить @property (nonatomic) User *user;
в MyController.h и удалить User *user;
в MyController.m. Пользователь не освобождается и нет сбоя.
Проверьте, что объект класса жив или нет. –
Какая линия фактически вызывает крушение? Я не вижу ничего, что было объявлено как «NSObject». Этот вопрос нуждается в большом разъяснении. – nhgrif
Я добавил код и строку, вызвавшую сбой – Thlbaut