2011-01-21 21 views
2

これは非常に単純でなければなりませんが、私はこれを行う方法を見つけ出すことはできません。私は、現在のメモリ使用量を監視するために、C-機能を持っている:客観CでC関数を宣言して使用して

natural_t report_memory(void) { 
    struct task_basic_info info; 
    mach_msg_type_number_t size = sizeof(info); 
    kern_return_t kerr = task_info(mach_task_self(), 
           TASK_BASIC_INFO, 
           (task_info_t)&info, 
           &size); 
    if(kerr == KERN_SUCCESS) { 
     return info.resident_size; 
    } else { 
     NSLog(@"Error with task_info(): %s", mach_error_string(kerr)); 
     return 0; 
    } 
} 

私はそれを使いたいです。どのようにして.hで宣言しますか? 私はObjective Cのメソッド内で明らかに(私にとっては)試してみました:

natural_t report_memory(void); 

コードでこのどこかの呼び出し:

NSLog(@"Memory used: %u", rvC.report_memory()); 

コンパイラはerror: called object is not a functionを文句を言います。したがって、宣言は何とか間違っていると私は推測します。私はいくつかのオプションを試しましたが、最高のものは実行時エラーでした... これを修正するには?それはC関数であるので

+0

を提出しますが、インスタンスメソッドとして宣言しましたか? – Mahesh

+0

そして 'rvC'の種類は何ですか? –

+0

rvCはコードが存在するRootViewControllerです。 – Axel

答えて

7
rvC.report_memory() 

report_memory() 

に置き換えなければなりません。

+0

しかし、私は別のクラスからそれを使いたい – Axel

+2

@angrest C関数はクラスに依存しません。必要なところで 'report_memory()'を呼び出すだけです。 –

+0

...それはあまりにも単純だった:) – Axel

1

あなたが他のモジュールでこの機能を使用する場合は、あなたもあなたのヘッダーに入れなければならない(.H)この行に

extern natural_t report_memory(void);