У меня проблемы с переносом Java-проекта, над которым я работал некоторое время назад, в код Objective-C - в первой строке этого кода я получаю «Сигнал программы получен:« EXC_BAD_ACCESS »»:
вызывается здесь:
-(id) initWithStart:(Point3D *)start andDirection:(Point3D *)dir {
if ( self = [super init] ) {
NSLog(@"%@%@", @"Direction:", [dir toString]);
printf("Trying to find unit length of direction...\n");
NSLog(@"%@", [[dir unit] toString]);
self.start = start;
self.direction = [dir unit];
}
return self;
}
Вывод на консоль:
2011-12-09 17:20:14.021 RayTracerProject[16607:407] Direction:(0,0,20)
Trying to find unit length of direction...
Метод toString Point3D выглядит следующим образом:
-(NSString *) toString {
NSNumber *xstring = [NSNumber numberWithDouble:self.x];
NSNumber *ystring = [NSNumber numberWithDouble:self.y];
NSNumber *zstring = [NSNumber numberWithDouble:self.z];
NSString * str = @"(";
str = [str stringByAppendingString:[xstring stringValue]];
str = [str stringByAppendingString:@","];
str = [str stringByAppendingString:[ystring stringValue]];
str = [str stringByAppendingString:@","];
str = [str stringByAppendingString:[zstring stringValue]];
str = [str stringByAppendingString:@")"];
return str;
}
из того, что я вижу, мой (Point3D *) dir
жив и здоров, когда я проверяю, какое значение использует мой вызов [dir toString]
.Но когда я пытаюсь вызвать [dir unit]
, кажется, что у меня больше нет переменных, которые я сделал в объекте, следовательно, ошибка EXC_BAD_ACCESS
.
Что я здесь не так делаю?Я думаю, что это связано с тем, как я управляю (или нет) использованием моей памяти, но я не знаю, что это такое.