我正在 Windows(cygwin、gcc)上测试一些简单的 Objective-C 代码。此代码已在 Mac 上的 Xcode 中运行。我想将我的对象转换为不是 NSObject 的子类(或其他任何东西,哈哈)。这可能吗,怎么做?
到目前为止我所拥有的:
// MyObject.h
@interface MyObject
- (void)myMethod:(int) param;
@end
和
// MyObject.m
#include "MyObject.h"
@interface MyObject()
{ // this line is a syntax error, why?
int _field;
}
@end
@implementation MyObject
- (id)init {
// what goes in here?
return self;
}
- (void)myMethod:(int) param {
_field = param;
}
@end
当我尝试编译它时会发生什么:
gcc -o test MyObject.m -lobjc
MyObject.m:4:1: error: expected identifier or ‘(’ before ‘{’ token
MyObject.m: In function ‘-[MyObject myMethod:]’:
MyObject.m:17:3: error: ‘_field’ undeclared (first use in this function)
编辑我的编译器是 cygwin 的 gcc,也有 cygwin gcc-objc 包:
gcc --version
gcc (GCC) 4.7.3
我已经尝试在网上和一些 Objective-C 教程中寻找这个,但是我发现的每个类的示例都继承自 NSObject。如果没有 Cocoa 或提供 NSObject 的某种 Cocoa 替代品,真的不可能编写 Objective-C 吗?
(是的,我知道 GNUstep。如果可能的话,我真的宁愿避免这种情况......)
编辑这有效:
// MyObject.h
@interface MyObject
@end
// MyObject.m
#include "MyObject.h"
@implementation MyObject
@end
虽然不是很有用...