-2

私が持っている場合:

test.c

int test_func(){


        }

そして、私はやりたかった:

test.m

[self test_func]

ファイルに関してファイルをどの.hように設定する必要がありtest.cますか。このような質問がここで回答されているのを見たことがありますが、ブックマークに失敗したため、追跡できません。コマンド.hを含むファイルが含まれていました。externどんな助けでも大歓迎です。

4

1 に答える 1

1

特別な方法で宣言test_funcし、さまざまな Objective-C ランタイム API 関数を使用して、そのメソッド実装をクラスのメソッド リストに「アタッチ」することができますが、これを行う最も簡単な方法は次のとおりです。

testfunc.h

#ifndef TESTFUNC_H
#define TESTFUNC_H

int test_func();

#endif

testfunc.c

#include "testfunc.h"

int test_func()
{
    return 4;
}

TestClass.h

#import <Foundation/Foundation.h>

@interface TestClass : NSObject
- (int) test_func;
@end

testclass.m

#import "TestClass.h"
#import "testfunc.h"

@implementation TestClass

- (int) test_func
{
    return test_func();
}

@end

実行時にメソッドを追加したい場合は、次のリンクを参照してください。

  1. 動的ランタイム解決

  2. ランタイム API メソッドの使用class_addMethod

C 関数を呼び出すような些細なことは、保守性と可読性のために、動的なメソッドの注入/解決を避ける必要があることに注意してください。質問で説明していない下心を持っていない限り、プラン A (単純なルート) を使用してください。

于 2013-07-15T01:30:32.900 に答える