2009-05-18 10 views
0

私がCocoaを使い始めたとき、int/floatなどをクラスプロパティに使用したり、NS *同等のもの(NSIntegerなど)を使用しないでください。クラスプロパティにintを使用する際に問題がありますか?

ここに本当の隠された問題があるのですが、それはなぜより良いのでしょうか、それを読んだ人の自主的なコーディングルールだったのでしょうか?

@interface xx... 
    int myProp; 
@end 

または

@interface xx... 
    NSInteger *myProp; 
@end 
+0

良い質問Aleksandar。この以前のStackOverflowの質問/回答はあなたが探しているものかもしれません:http://stackoverflow.com/questions/13725/in-cocoa-do-you-prefer-nsinteger-or-just-regular-int-and-why –

+0

ちょうどチャックのポイントを明示的に下にするために、intサンプルのNSIntegerバージョンは "NSInteger myProp"、* NSInteger * myPropではありません。 – smorgan

+0

よろしく、smorganに感謝します。私はNS Oで始まるものの後に*追加する習慣に慣れています:) –

答えて

2

int型のバージョンは大丈夫ですが、NSIntegerが好ましい:

だから、何が良いです。 NSIntegerはオブジェクトではなく、ポインタで参照する必要はありません。これは、変数が32ビットと64ビットの両方のコンピュータでネイティブワードサイズになるようなtypedefです。したがって、最良の選択肢は、

@interface SomeClass : NSObject { 
    NSInteger aNumber; 
@end 

@implementation SomeClass 
- (id)init { 
    [super init]; 
    number = 42; 
} 
@end 
+0

それは基本的にintサイズを押すことに対する安全な警戒ですか?それで、もし私がそれが小さな最大数(1000のような)になると確信しているなら、intを使うことに何も悪いことはありません。 –

+0

それは何に対しても安全保障ではありません。アプリのアーキテクチャに依存しないようにするだけです。一般的に、NSIntegerにintを使用する正当な理由はありません。何も得られません。小さい数を指定してスペースを節約したい場合は、uint_16やuint_8などの小さな型を使用する必要があります。 – Chuck

+0

ありがとうチャック、非常に感謝します。 –

0

このquestionを参照してください。 NSIntegerはアーキテクチャ上安全であり、10.5以降で推奨されています。

関連する問題