蘋果開發 筆記(22)

2021-07-02 13:55:24 字數 2410 閱讀 5478

今天繼續練習,重新去理解一下動態識別的應用。平時我們經常判斷乙個物件是不是所屬的類或者子類 ,可以通過is 的方法去完成。這個是swift提供的乙個方法。oc則提供豐富的方式來判斷,大部分功能整合在nsobject可見。可以說nsobject 責任非常重。

方法名作用

ismemberofclass

檢測是不是某個類

iskindofclass

檢測是不是某個類或者所屬子類

respondstoselector

檢測方法是否存在接受響應

issubclassofclass

是否所屬的子類

performselector

響應相應的方法

下面建立了三個類 分別為animal(動物) human(人類) 和cat(貓) 類

它們的關係是

cat 繼承了animal類

human 則不繼承animal

定義相關的類

animal.h定義

#import 

@inte***ce

animal : nsobject

-(void) eat;

@end

實現動物

#import "animal.h"

@implementation

animal

-(void) eat

@end

實現人類

#import 

@inte***ce

human : nsobject

//說話

-(void) say;

@end

#import "human.h"

@implementation

human

-(void) say

@end

貓類:

#import 

#import "animal.h"

@inte***ce

cat : animal

@end

#import "cat.h"

@implementation

cat@end

實現**

#import 

#import "human.h"

#import "animal.h"

#import "cat.h"

int main(int argc, const

char * argv)

//物件是不是所屬類物件成員,判斷是不是屬於某個類

if([animala ismemberofclass:[animal class]])

//物件是不是所屬類物件的成員或者子類的成員,判斷是不是屬於某個類或者子類,區別於ismemberofclass方法

if([animala iskindofclass:[human class]])

else

//判斷是不是某個類的子類

if([cat issubclassofclass:[animal class]])

//通過字串 獲取 類物件

class myclass = nsclassfromstring(@"animal");

id animal =[[myclass alloc] init];//例項化物件

[animal eat];//採用動態型別去傳送訊息

//判斷是否能響應指定的eat的方法

if([animal respondstoselector:@selector(eat)])

}return

0;}

在學習動態識別應用裡面提及關於靜態和動態的一些區別。我們常用的nsstring、nsarray、nsinteger 發生一些錯誤等在編譯期就能區別開來 這是編譯器幫我們做的工作。

關於靜態的好處是什麼?

關於動態的優點和缺點又是什麼?

這些知識,還是要繼續區分一下才行。好,繼續看書。

引用下面的一些觀點

來自於成少雷的教學

1.可以將物件分為動態型別靜態型別兩種

2.如果不涉及多型,盡量使用靜態型別

3.靜態型別可耕好的在編譯階段而不是執行階段指出錯誤

4.靜態型別能夠提供程式的可讀性。

蘋果開發 筆記(9)

今天書寫的內容不多一直在徘徊緊。早上接觸了git,申請了乙個賬號。以後的 都可以那邊託管一下。將昨天寫到的 模板也看了一下,原來自定義的 模板放置在這裡使用mac 前往資料夾功能即可跳轉到對於的資料夾 library developer xcode userdata codesnippetsxcod...

蘋果開發 筆記(17)

第一次在建立專案 勾選 coredata 的選項會生成一些coredata 的相關的api 類。這些類會記錄在 那裡。從 那裡找到獲取到 nsmanagedobjectcontext 的上下文。想起這個上下文,包括繪圖也有類似。先獲取到對應的類,下面就可以做出相應的事情。例如乙個是建立的動作,乙個獲...

蘋果開發 筆記(23)

nsobject的oc裡面基礎類,在最近的學習當中,越來越發現在oc扮演一種責任很大。涉及到當中runtime 理解,眾多概念又是oc學習的乙個難點。當中的概念有 sel,class,imp。sel 方法id,指向乙個objc selector的指標,表示方法的名字 imp 函式指標,方法位址 在這...