nsobject *obj1 = [[nsobject alloc] init];
nsobject *obj2 = [[nsobject alloc] init];
nslog(@"obj1 - %p", obj1); // 列印: obj1 - 0x100500e90
nslog(@"obj2 - %p", obj2); // 列印: obj2 - 0x1005061b0
複製**
例如, 乙個person
類, 繼承自nsobject
, 有乙個_age
的成員變數
@inte***ce
person: nsobject
@end
@implementation
person
@end
複製**
person *p1 = [[person alloc] init];
p1->_age = 3
person *p2 = [[person alloc] init];
p2->_age = 4
複製**
nsobject *obj1 = [[nsobject alloc] init];
nsobject *obj2 = [[nsobject alloc] init];
// - (class)class
class objectclass1 = [obj1 class];
class objectclass2 = [obj2 class];
// + (class)class
class objectclass3 = [nsobject
class];
// object_getclass(例項物件)
class objectclass4 = object_getclass(obj1);
class objectclass5 = object_getclass(obj2);
複製**
nslog(@"%p %p %p %p %p",
objectclass1,
objectclass2,
objectclass3,
objectclass4,
objectclass5);
// 列印結果: 0x7fff955aa140 0x7fff955aa140 0x7fff955aa140 0x7fff955aa140 0x7fff955aa140
複製**
如下圖:
// runtime api
class objectmetaclass = object_getclass([nsobject
class]);
複製**
注意:meta-class物件
和class物件
擁有相同的結構, 意思如下圖
class物件
中,類方法資訊
為空,meta-class
方法中屬性資訊
、物件方法資訊
、協議資訊
、成員變數資訊
為空
注意:- (class)class
和+ (class)class
方法只能獲取class物件
, 不能獲取meta-class物件
meta-class物件
只能通過runtime
的object_getclass(類物件)
獲取
class objectclass = [nsobject
class];
nslog(@"%d", class_ismetaclass(objectclass)); // 列印: 0
class objectmetaclass = object_getclass([nsstring
class]);
nslog(@"%d", class_ismetaclass(objectmetaclass)); // 列印: 1
複製**
1.class objc_getclass(const
char *aclassname)
1> 傳入字串類名
2> 返回對應的類物件
2.class object_getclass(id obj)
1> 傳入的obj可能是instance物件、class物件、meta-class物件
2> 返回值
a) 如果是instance物件,返回class物件
b) 如果是class物件,返回meta-class物件
c) 如果是meta-class物件,返回nsobject(基類)的meta-class物件
3.- (class)class、+ (class)class
1> 返回的就是類物件
- (class)
+ (class)
複製**
iOS學習 第二天
第一部分 方法 類名 函式名 方法 例項 函式名 import inte cetest nsobject void test int a 代表例項方法 instance void test2 int b 代表靜態方法 end import test.h implementationtest void...
學習第二天筆記
所有識別符號都應該以字母 a z或者a z 美元符號 或者下劃線 開始。首字元之後可以是字母 a z或者a z 美元符號 或者下劃線 或數字的任何字元組合。不能使用關鍵字作為變數名或者方法名。識別符號是大小寫敏感的。合法識別符號舉例 age salary value 1 value 非法識別符號舉例...
OC自學的第二天
成員變數的作用域 點語法 get方法 成員變數 物件方法命名規範 類方法 self 誰呼叫了當前方法,self就代表誰 1 self出現在物件方法中,self就代表物件 2 self出現在類方法中,self就代表類 可以利用self 成員變數名 訪問當前物件內部的成員變數 self 方法名 可以呼叫...