Интересно, если кто-то может объяснить, где я здесь ошибаюсь, я создаю 2 объекта (автомобиль и двигатель), где объект автомобиля содержит указатель на объект двигателя. Я знаю, что упускаю очевидное или просто совершаю какую-то глупую ошибку, но не могу понять, как это сделать.
NB: код все работает, кроме строки, которая является комментарием ERROR.
// INTERFACE ------------------------------------------------------- **
@interface EngineClass : NSObject {
}
@end
@interface CarClass : NSObject {
EngineClass *engine;
}
- (void)setEngine:(EngineClass *)value;
@end
// IMPLEMENT ------------------------------------------------------- **
@implementation CarClass
- (void)setEngine:(EngineClass *)newEngine {
if (engine != newEngine) {
[engine release];
engine = [newEngine copy];
}
}
@end
@implementation EngineClass
@end
// MAIN ------------------------------------------------------------ **
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
CarClass *newCar_001;
EngineClass *newEngine_001;
newCar_001 = [[CarClass alloc] init];
newEngine_001 = [[EngineClass alloc] init];
[newCar_001 setEngine: newEngine_001]; // ERROR
// Clean up
[newCar_001 release];
[newEngine_001 release];
[pool drain];
return 0;
}
// END ------------------------------------------------------------- **
ОШИБКА .... .... 1006 *
пробег
2009-09-22 13: 41: 05.483 cocoa_engine_TEST [8606: a0f]
2009-09-22 13: 41: 05.485 cocoa_engine_TEST [8606: a0f]
2009-09-22 13: 41: 05.485 cocoa_engine_TEST [8606: a0f] - [EngineClass copyWithZone:]: нераспознанный селектор, отправленный экземпляру 0x10010c8d0
2009-09-22 13: 41: 05.486 cocoa_engine_TEST [8606: a0f] *** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [EngineClass copyWithZone:]: нераспознанный селектор, отправленный экземпляру 0x10010c8d0'
ура -gary-