あなたの混乱がどこにあるのかわからないので、変数と呼ばれることが多い単純なボックスから始めます。これが基本的すぎる場合はお詫びします。
あなたが書くとき:
NSInteger someNumber;
を格納するのに適したボックスを割り当て、NSINtegerこのボックスを名前で参照するように求めています。ボックスには、アドレスまたはポインタsomeNumberと呼ばれることが多い別の名前もあります。したがって、整数にスペースを割り当てました。
同様に、次のように記述します。
NSNumber *intNumber;
を格納するのに適したボックスを割り当てていますNSNumber *。これは、このボックスに他のボックスの名前 (アドレス) を含めるように指定する方法です。このボックスを name で参照するように求めていますintNumber。したがって、ポインター用のスペースを割り当てました。割り当てていないのは、NSNumber(注 no *) と名前(またはアドレスまたはポインター) を格納できるボックスですintNumber。
今行:
releasePool *pool = [[NSAutoreleasePool alloc] init];
は 2 つのことを行います。左側は、最初の 2 つの例とまったく同じことを行います。ボックスを割り当て、便利な名前を付けます。poolこのボックスは、値を保持するボックスの名前を保持するのに適していNSAutoreleasePoolます。
右側のサイズは、 を使用して、値allocを保持するのに適したボックスを割り当てる式です。NSAutoreleasePoolを使用して、そのボックスに値を入れますinit。ボックスの名前を返します。
最後に、割り当ては RHS によって返された名前を受け取り、それを LHS によって作成されたボックスに入れます。
したがって、ステートメント全体で2 つのボックスが作成されました。
これにより、次のことがわかります。
intNumber = [NSNumber numberWithInteger: 100];
ここで、LHS は既に作成されているボックスを指定します。RHS は、ボックスの名前を返す式です。RHS 側が返す名前のボックスはどこで作成されましたか? 本当に推測することしかできませんが (numberWithIntegerもちろんソースがない限り)、それは問題ではありません。ボックスはいつか誰かによって作成され、式はその名前を返します。割り当てにより、割り当てなかったボックスの名前が割り当てられ、ボックスに割り当てられましintNumberた。あなたが知る必要があるのはそれだけです...
よくほとんど。ARC または GC を使用している場合は、ここで終了できます。MRC を使用している場合はretain、ボックスにするかどうかを知る必要がありますが、それは別の問題です...
HTH。