私が書く場合は - 私が書く場合NSObjectがリリースされましたが、NSStringはNSArrayではありませんか?
NSObject *a = [[NSObject alloc] init]; // or UIView or something
[a release];
NSLog(@"a = %@", a); // causes EXC_BAD_ACCESS, fine
しかし、 -
NSArray *a = [[NSArray alloc] init]; // or NSString or NSDictionary
[a release];
NSLog(@"a = %@", a); // no crash, prints empty array or string
がリリースだから後者の場合は、不正なアクセスが発生しないのはなぜ?
あなたは私より速く、私はまったく同じ方法で答えるつもりでしたが、私は1単語も入力しませんでした。 +1 – borrrden
しかし、NSObjectやUIViewなどをリリースすることは間違いなく即座にクラッシュしますが、NSArrayやNSStringなどは間違いなくすぐにクラッシュすることはありません。だからいくつかの違いは、メモリの使用、配列または文字列のリリースのケースにある必要があります。それは何ですか? – user1559227
**ランダム**を参照してください。この場合、NSObjectではクラッシュしますが、NSArrayではクラッシュしません。異なるオプションでコンパイルすると、そのように動作しない可能性があります。 OSがどのようにメモリを使用するかは、多くの要因によって異なります。これは、* released *と* deallocated *の違いです。 – borrrden