6

次のように、Objective-Cクラスの実装内でc関数と変数を定義できます。

@implementation MyViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    cfunction();
}

// variable inside class
NSString *message = @"this is c function inside objective-c class";

// c function inside class
void cfunction() {
    NSLog(@"%@", message);
}

@end

結果

this is c function inside objective-c class

このコードは、警告やエラーなしで機能します。
有効なObjective-Cコードですか?
Objective-Cクラス内で変数とc関数を定義するのは安全ですか?
この言語仕様に関するドキュメントはありますか?

4

4 に答える 4

3

はい、これは正しく安全ですが、回避するようにしてください。C 関数が必要な場合は、別のファイルで定義します (別のヘッダー ファイルで宣言します)。

技術的には、Obj-C は C 言語の上にある薄いレイヤーであり、Obj-C ソース コード内の任意の場所で任意の C 機能を使用できます。ただし、コーディング スタイルに準拠する必要があり、2 つの言語を混在させないでください。

于 2012-11-16T15:06:42.037 に答える
2

有効な Objective-C コードですか?

はい、そうです。

Objective-Cクラス内で変数とc関数を定義しても安全ですか?

はい、そうです。クラス内で定義された関数の特定のプロパティの 1 つは、そのような関数が、指定されたクラスのインスタンスであるオブジェクトのプライベートおよび保護された ivar に直接アクセスできることです。

この言語仕様に関するドキュメントはありますか?

このSOの質問に関する議論を参照してください。

于 2012-11-16T15:07:30.477 に答える