2012-06-25 18 views
14

(私はココア初心者だと)私たちが行う必要がありますなぜ私は思ったんだけど:このような理解のNSLog構文

NSLog(@"this is the variable value: %d",variable); 

なく何か:私はそれを理解したよう

[NSLog outputThis:@"this is the variable value: %d" param:variable]; 
+1

第2のステートメントは 'NSLog'オブジェクトで' outputThis:param: 'メソッドを呼び出すためです。 'NSLog'はCocoaフレームワークの単なる関数です。 – Eimantas

+0

はい、それは[NSString stringWithString:@ "this is a string"]のようにNSLogクラスのクラスメソッドであった可能性があります。 ? – tahir

+0

NSLogはクラスのように "発音"しません。 NSLoggerはクラス名のためのより良い選択でした。今はちょうどアクションです。 – Eimantas

答えて

18

私が始めているとき、これはかなり混乱していると思います。主な理由は、NSLogメソッドは、Core Foundationの多くの他のものと同様、Objective-C APIではなくCベースのAPIです。 Cスタイルの関数は、myFunction(myParameter1、myParameter2)のようになります。

[UIView presentModalViewController:]などに多分使用されているGUIのすべてはObjective-C APIをベースにしています(Obj-Cのセレクタと呼ばれる)。 Objective-C言語はCの上にあり、ほとんどのアプリで両方のスタイルを見つけることができます。

+0

アップルはすべてを決めて、それを好きになるでしょう – onmyway133

5

、のNSLogをObjective C関数ではありませんが、C関数はCocoaの基礎に組み込まれています。したがって、可変引数を持つ基本的なC関数に準拠しています。

4

NSLog may は、クラスのようにと思われますが、そうではありません。

NSLogは コンソールにデバッグ文を印刷するためのFoundationKit機能です。 NSObjCRuntime.hに定義されています。

void NSLog(NSString format, ...); 

情報の良い量がここにあります:http://cocoadev.com/wiki/NSLog

EDIT: @fyngyrzページが死んでいる、指摘したように。従ってhere is a wayback-machine version of the page from 2012

+1

いいえ、ありません。ページがなくなった。 – fyngyrz

+0

@fyngyrz Thanx。答えを編集しました。 – Alladinian