------------(instance對(duì)象)實(shí)例對(duì)象
@interface Person : NSObject
{
@public
int _age;
}
@property (nonatomic, assign) int height;
@end
@implementation Person
@end
Person *person1 = [[Person alloc] init];
person1->_age = 10;
Person *person2 = [[Person alloc] init];
person2->_age = 30;
?? person1和person2是Person的instance對(duì)象替饿,
分別占據(jù)著兩塊不同內(nèi)存。
??instance對(duì)象在內(nèi)存中存儲(chǔ)的信息包括:
isa指針贸典,
以及其他成員變量
------------(class對(duì)象)類對(duì)象
// instance對(duì)象视卢,實(shí)例對(duì)象
NSObject *object1 = [[NSObject alloc] init];
NSObject *object2 = [[NSObject alloc] init];
Class objectClass1 = [object1 class];
Class objectClass2 = [object2 class];
Class objectClass3 = object_getClass(object1);//#import <objc/runtime.h>
Class objectClass4 = object_getClass(object2);//#import <objc/runtime.h>
Class objectClass5 = [NSObject class];
??objectClass1 ~5都是NSObject的class對(duì)象(類對(duì)象)
??它們是同一個(gè)對(duì)象;每個(gè)類在內(nèi)存中有且只有一個(gè)class對(duì)象
??class對(duì)象在內(nèi)存中存儲(chǔ)的信息包括:
isa指針
superclass指針
類的屬性信息(@property)
類的對(duì)象的方法信息(instance method)
類的成員變量信息(ivar)
類的協(xié)議信息(protocol)
-----------(meta-class對(duì)象)元類對(duì)象
// meta-class對(duì)象廊驼,元類對(duì)象
// 將類對(duì)象當(dāng)做參數(shù)傳入据过,獲得元類對(duì)象
Class objectClass5 = [NSObject class];
Class objectMetaClass = object_getClass(objectClass5);//#import <objc/runtime.h>
??objectMetaClass 是 NSObject的meta-class對(duì)象(元類對(duì)象)
??每個(gè)類在內(nèi)存中有且只有一個(gè)meta-class對(duì)象
?? meta-class對(duì)象和class對(duì)象內(nèi)存結(jié)構(gòu)是一樣的,但用途不一樣
??在內(nèi)存中存儲(chǔ)的信息主要包括
isa指針
superclass指針
類的方法信息(class method)