当代码发送消息alloc 给类时,IOS平台会在内存中分配内存块。该内存块包含了此类声明的属性的内存。
下面让我们看个例子:
下面代码声明了一个Car类。定义了三个属性 year,make,model。
#import <Cocoa/Cocoa.h>
@interface Car : NSObject {
int year;
NSString *make;
NSString *model;}
@end
下面代码创建了Car 类和NSObject类的实例
int main (int argc, const char * argv[]) {
Car * myCar=[[Car alloc] init];
NSLog(@"this is myCar:%d",sizeof(myCar));
NSLog(@"this is *myCar:%d",sizeof(* myCar));
NSObject * object =[[NSObject alloc]init];
NSLog(@"this is object:%d",sizeof(object));
NSLog(@"this is *object:%d",sizeof(* object));
}
执行结果如下:
myCar是一个指针。它的所占的内存大小8B。
*myCar 是取得myCar指针指向的对象(Car类创建的实例),实例占的内存大小是:32B,是由一个可占内存大小8B的int类型 year属性,和两个占内存大小8B的指针类型的make,model属性,和一个占内存大小为8B的继承于NSObject的字段组成的。
(提示:对于32位电脑来说int类型占4个字节,对于64位的电脑来说int类型占8个字节)