5
如果我寫 -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 – borrrden 2013-05-09 09:57:05
但釋放NSObject或UIView等肯定崩潰立即,而NSArray或NSString等絕對不會立即崩潰。所以在內存使用中必須有一些差異,釋放數組或字符串的情況。那是什麼? – user1559227 2013-05-09 10:11:34
請參閱** random **。在這種情況下,它會崩潰的NSObject,但不是NSArray。如果你用不同的選項進行編譯,它可能不會這樣。操作系統如何使用內存取決於許多因素。這是*釋放*和*釋放之間的區別* – borrrden 2013-05-09 10:16:03