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)
EDIT私のコンパイラは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
あまり役に立ちませんが…