一,nsobject的基本使用
nsobject的常用方法
1.判斷是夠味aclass或者aclass的子類的例項
- (bool)iskindofclass:(class)aclass
2.判斷是否為aclass的例項(不包括aclass的子類)
- (bool)ismenberofclass:(class)aclass
3.判斷物件是否實現了aprotocol協議
- (bool)conformatoprotocol:(protocol)aprotocol
4.判斷這個類的物件是否擁有引數提供的方法
+ (bool)instancesrespondtoselector:(sel)aselector
5.判斷物件是否擁有引數提供的方法:
無傳入引數時
test
後面不用加冒號,有引數則加冒號,不能傳入一般資料型別
只能傳入面向
oc物件的
- (bool)respondstoselector:(sel)aselector
6.延遲呼叫引數提供的方法,方法所需從引數用withobject傳入
- (void)performselector:(sel)aselector withobject:(id)andargument afterdelay:nstimeinterval)delay
二,反射
反射定義
:根據乙個字串(方法)可建立乙個物件(方法),根據字串來使用另乙個物件
class的反射
1.通過類名的字串形式例項化物件
class class = nsclassfromstring(@"student");
student *stu = [[class alloc] init];
2.將類名變成字串
class class = [student class];
nsstring *classname = nsstringfromclass(class);
sel的反射
1.通過方法的字串形式例項化方法
sel selector = nsselectorfromstring(@"setname:");
[stu performselector:selector withobject:@"mike"];
2.將方法變成字串
nsstringfromselector(@selector(setname))
三,copy
1.copy的根本目的:改變副本的時候,不會改變源物件
2.copy的分類:1>深拷貝:內容拷貝,會產生新的物件,新物件計算器+1,源物件計算器不變,如 mutablecopy
2>淺拷貝:指標拷貝,不會產生新的物件,copy直接返回源物件本身如copy
深拷貝與淺拷貝取決於源物件本身,如源物件本身就是不可變則是淺拷貝
3.copy的使用場合:改變外面物件,不影響內部物件的時候用copy策略
4.copy的特點:1>copy代表set 方法時會release舊物件,copy新物件
2>copy會修改外面的變數,並不影響內部的成員變數,retain則會改變內部成員變數
3>建議:字串string一般用copy策略,其他物件一般用retain,根據需求來選擇
NSObject 類的反射,方法反射(十五)
nsobject 類的反射,方法反射用法如下 import ms nsreflect.h import ms person.h import ms student.h implementation ms nsreflect void shownsreflect else 基類 iskindofcla...
NSObject 內省方法
內省 introspection 是物件導向語言和環境的乙個強大特性,objective c和cocoa在這個方面尤其的豐富。內省是物件揭示自己作為乙個執行時物件的詳細資訊的一種能力。這些詳細資訊包括物件在繼承樹上的位置,物件是否遵循特定的協議,以及是否可以響應特定的訊息。nsobject協議和類定...
NSObject官方介紹
from sobject協議組對所有的object c下的objects都生效。如果objects遵從該協議,就會被看作是first class objects 一級類 另外,遵從該協議的objects的retain,release,autorelease等方法也服從objects的管理和在foun...