NSObject,反射,copy筆記

2021-06-22 11:11:33 字數 1639 閱讀 5231

一,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...