Здравствуйте, у меня проблема со следующим кодом в GTMTestCase:
- (void)testSomething {
myType *year = [myType valueFromString:@"1978"];
STAssertTrue([year isKindOfClass:[XBNumberAttribute class]], @"Must be subtype.");
}
Если я построю это (= выполню тесты), я получу «ошибку сегментации» $ TARGET_BUILD_DIR / $ EXECUTABLE_PATH "-RegisterForSystemEvents, команда / bin / sh завершилась ошибкой с кодом завершения 139 ".Это, однако, исчезает, как только я сохраняю объект year (который на самом деле автоматически высвобождается в методе valueFromString, см. Ниже):
- (void)testSomething {
myType *year = [[myType valueFromString:@"1978"] retain];
//STAssertTrue(([year retainCount] == 2), @"Retain count wrong");
STAssertTrue([year isKindOfClass:[XBNumberAttribute class]], @"Must be subtype.");
}
Раскомментирование утверждения retainCount действительно показывает, что в этом месте счет сохранения равен 2,Однако, если я поставлю [год выпуска] в конце метода, сборка снова завершится с ошибкой, как описано выше.
В чем здесь дело?
РадиВ полноту я включаю код valueFromString:
+ (id)valueFromString:(NSString *)pString {
return [[[myType alloc] initWithString:pString] autorelease];
}
А вот метод initWithString:
- (id)initWithString:(NSString *)pString {
if (self = [super initWithString:pString]){
}
return self;
}
, указывающий на следующий метод супертипа:
- (id)initWithString:(NSString *)pString
{
if (self = [super init]) {
theNumber = [NSNumber numberWithInt:[pString intValue]];
}
return self;
}