У меня проблема, когда у меня возникают исключения для доступа, но только при запуске тестовой сборки (вызов тех же методов в сборке отладки не вызывает проблемы). Проект включен ARC, и я бегу это на IPad 5.1 тренажере с использованием Xcode 4.3:EXC_BAD_ACCESS с использованием ARC только во время тестирования
Вот где проблема выплывает:
- (void)testChangeFoodNotification {
Player* p = [[Player alloc] init];
[p addObserver:self forKeyPath:@"food" options:0 context:0]; // <-EXC_BAD_ACCESS (code=2)
p.food += 1;
STAssertTrue(_wasNotifiedOfFoodChange, nil);
}
В тот момент, когда метод addObserver:
называется Безразлично» Кажется, что какой-либо из задействованных объектов должен был быть выпущен, так что может вызвать исключение?
РЕДАКТИРОВАТЬ:
Извинения, если это не было ясно, но выше код выполняется как часть теста (с использованием стандартного Xcode OCUnit). Кроме того, в случае проясняет ничего здесь соответствующий код из класса игрока (есть другие Ивар и методы, но они не имеют никакого отношения к собственности или методам тестируются):
// Public interface
@interface Player : NSObject
@property (nonatomic, assign) NSInteger food;
@end
// Private interface
@interface Player() {
NSInteger _food;
}
@end
@implementation Player
@synthesize food = _food;
#pragma mark - Getters/Setters
- (void)setFood:(NSInteger)food {
[self willChangeValueForKey:@"food"];
_food = food;
[self didChangeValueForKey:@"food"];
}
Жаль, что я не смог бы поддержать это 100 раз. Благодаря! – DexterW
Я также столкнулся с этой проблемой с CocoaPods. Файл реализации класса был включен в контейнеры для целевого объекта приложения и приложения, за исключением того, что в журналах не было повторяющегося предупреждения класса. – Eric