ObjectiveCで整数を処理する方法に混乱しています。
私が以下を定義する場合:
NSInteger i = 6;
NSLog(@"%d", i);
コンソールに6を出力することを期待しています。
ただし、オブジェクト内にNSIntegerがあり、これは明らかにポインターによって参照されているため、非常に異なる結果が得られます。
例えば:
@interface Section : NSObject {
NSInteger Id;
}
@property (nonatomic, assign) NSInteger Id;
これは実装で合成されたと想定してください。
次のように、オブジェクトセットの値を作成し、再度アクセスします。
Section *section = [[Section alloc] init];
section.Id = 6;
NSMutableArray *sections = [[NSMutableArray alloc] init];
[sections addobject:section];
Section *sectionB = [setions objectAtIndex:0];
NSLog(@"%d", sectionB.Id);
これには、メモリアドレス、つまり5447889のような数値を出力するという奇妙な効果があります。値を取得できないのはなぜですか。
私は使用してみました:
NSInteger sid = [[section Id]integerValue];
しかし、その後、無効なレシーバータイプ「NSInteger」という警告が表示され、プログラム受信信号「EXC_BAD_ACCESS」というエラーが発生することがあります。
整数、またはその問題の値を適切に処理する方法を本当に知りたいです。
どうもありがとう