3

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

あまり役に立ちませんが…

4

2 に答える 2

2

NSObject可能ですが、objective-c でメモリ割り当て APIを実装していることに注意してください。ルート クラスにや同等NSObjectのものを実装しない場合でも、すべてのクラスに同じ機能を実装する必要があります。+alloc-dealloc

于 2013-10-25T19:24:51.343 に答える