EXC_ПЛОХОЕ_ДОСТУП с использованием ARC только во время тестирования

У меня проблема, когда я получаю исключения из-за неправильного доступа, но только при запуске тестовой сборки (вызов тех же методов в отладочной сборке не приводит к возникновению проблемы ). В проекте включен ARC, и я запускаю его на симуляторе iPad 5.1, используя Xcode 4.3:

Вот где возникает проблема:

- (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). Кроме того, если это что-то проясняет, вот соответствующий код из класса проигрывателя (есть другие ivars и методы, но они не имеют никакого отношения к тестируемому свойству или методам):

// 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"];    
}
7
задан Brad Larson 20 April 2012 в 14:27
поделиться