2011-06-28 2 views
1

私は自分のコードを見ていて、xcodeのobj.cの標準について疑問を抱いていました。元のC、C++オブジェクトと重複するこれらすべてのNS(オブジェクトタイプの挿入)があります。コードスニペットのさまざまな選択肢を明確にしたいと思っていました。それぞれを説明するよりも、これらをすべて含むガイドまたはリファレンスへのリンクになります。Xcodeの変数型に最適なコーディング方法はありますか?

object.property = blah;又は[object setProperty:blah];
float aFloat = 0.01;(又はdouble)またはCGFloat aFloat = 0.01
int anInt = 1又はNSInteger anInt = 1
@"%d", anInt又は@"%i", anInt

おかげ

+1

Xcodeには変数型がありません - それはIDEです – vikingosegundo

答えて

2

最初の(メソッド呼び出しVSドット表記)は、純粋のものです味。 man printfは、%d%iは両方とも符号付き10進数のプレースホルダであるため、ObjCはCの厳密なスーパーセットであるため、その意味は変わりません。

NSまたはCGの接頭辞はプラットフォームに依存し、実際には標準Cタイプのtypedefです。 NS/CG型を使用して異なるプラットフォーム(32/64ビットなど)用にコンパイルすることにした場合、コンパイルするプラットフォームのデフォルトの型に戻ります。例NSInteger(NSObjCRuntime.hからの抜粋)を見てみましょう:

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger; 
typedef unsigned long NSUInteger; 
#else 
typedef int NSInteger; 
typedef unsigned int NSUInteger; 
#endif 

それがそうでなければ、あなたがiOS用にコンパイルしていない場合は、NSIntegerはlongのために立つことを示している - それは、単純なintになります。私は最初のいくつかにObjCのtutoriaでそれを見たので、私はいつも%dを使用

個人的な意見

。決して整数のための他のプレースホルダを振り返ってはいけません(%lldを除く)。コンパイル時に受信者タイプが分かっている場合にのみ、ドット表記を使用します。時には、あなたはこれを記述する必要があります。

id possiblyView = [someObject someView]; 
// the following line will give compile warning 
possiblyView.frame 
// the following line won't 
[possiblyView frame]; 

これらの呼び出しの結果は同じですが、ID型指定された構造の下frame変数の最初の行力コンパイラの外観。

そして、私はいつもNS-CG変数型を使うようにしています。なぜなら、C-ishよりもObjC-ishの方がコードがもっと見えるからです。

+0

その説明をありがとう。おそらくNS/CG変数の型を一貫して使い始めるので、私のコードは "ObjC-ish"に見えます:D。 –

関連する問題