最初の(メソッド呼び出し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の方がコードがもっと見えるからです。
Xcodeには変数型がありません - それはIDEです – vikingosegundo