雖然作iOS開發也有一段時間,但一直疲於趕項目,並未仔細研究OC,可貴今日比較閒又拿起OC資料研讀一番,發現效果很好,不過也感慨技術更新實在過快,發現以前的資料已經和現行技術有些出入。spa
在某資料上對內存這一塊講解時,當給一個對象分配內存時,其內存的大小是由這個類的成員變量決定,好比:.net
@interface Car : NSObjectorm
{對象
int year;繼承
NSString *make;內存
NSString *model;開發
}get
@end it
對於這個Car類,該資料的輸出結果是:test
NSObject *object = [[NSObject alloc] init];
Car *testCar = [[Car alloc] init];
NSLog(@"%lu", sizeof(object)); // 4B
NSLog(@"%lu", sizeof(testCar)); //16B
講解的緣由是「Car類繼承NSobject,因此首先有4B的內存,而後3個成員變量各佔4B,也就是4B + 3 * 4B = 16B」。
可是最後經過實踐發現,其輸出結果:
NSLog(@"%lu", sizeof(object)); // 8B
NSLog(@"%lu", sizeof(testCar)); //8B
都爲8B.