Использование Object кажется законным делом во время изучения Objective-C.Вы хотите использовать Object.h, чтобы, скажем, начать с более простого корневого класса.Я столкнулся с подобной проблемой, пытаясь использовать Object в OSX.
Итак, вот что происходит с Object, по крайней мере, в OSX:
В последних версиях OSX Apple потрошил Object.h, насильственно осуждая это.(Если вы посмотрите на /usr/include/Object.h в OSX 10.5 или более поздней версии, вы увидите, что старая версия была исключена из __OBJC2__
, а в новой версии фактически отсутствуют нужные методы.) Отношения между Apple и Objective-C сбивают меня с толку, поэтому трудно сказать, является ли делать это без простого способа отказаться от 2.0 неприятно или нет.
Я подозреваю, что вы могли бы обойтиэта проблема, определяя свой собственный корневой класс или находя способ связать старую среду выполнения target-c вместо новой.Или, конечно, вы можете просто капитулировать и использовать NSObject там, где вы будете использовать Object, и связать его с Objective-C 2.0.
Если вы собираетесь пойти вторым путем, вам нужно настроитьпримеры, которые вы используете.Вместо того, чтобы включать Object.h, включайте Foundation.h, и вместо того, чтобы связывать, используя -lobjc, связывайте, используя -framework Foundation (который будет включать libobjc), например так:
#include <Foundation/Foundation.h>
int main()
{
NSObject* obj = [NSObject new];
[obj release];
return 0;
}
Построен с использованием
clang main.m -framework Foundation
Запуск с использованием
. / A.out