溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Objective -C-2

發(fā)布時(shí)間:2020-07-20 16:18:49 來(lái)源:網(wǎng)絡(luò) 閱讀:438 作者:Im劉亞芳 欄目:開(kāi)發(fā)技術(shù)


實(shí)例變量的可見(jiàn)度---能不能在外界訪問(wèn)。。

@protected  (受保護(hù)的,默認(rèn)的)---實(shí)例變量只能在該類(lèi)和其子類(lèi)內(nèi)操作

@public   =--------實(shí)例變量可以在類(lèi)的外部和內(nèi)部操作

@private----------實(shí)例對(duì)象只能在該類(lèi)內(nèi)訪問(wèn)


內(nèi)部是只相應(yīng)@implementation    和@end  之間    。。。。

為什么不能使用@public

  1. 使用@public關(guān)鍵字,暴露類(lèi)類(lèi)內(nèi)部的細(xì)節(jié)。

  2. 不符合面向?qū)ο笳Z(yǔ)言的三大特性之一--封裝

面向?qū)ο笕筇匦裕悍庋b,繼承,多態(tài);


類(lèi)中不能出現(xiàn)同名的方法

- (void)setSex:(NSString *)sex;

int  double      flout用作參數(shù)不用加*(NSInteger   NSUInteger  CGFloat);


receiver  message]  消息機(jī)制,,

繼承是單向的,不能相互繼承。

繼承是具有傳遞性的 ,,,

子類(lèi)能繼承父類(lèi)全部的特征和行為,


繼承的特點(diǎn)

  • OC中只允許單繼承

  • 沒(méi)有父類(lèi)單類(lèi),稱(chēng)為根類(lèi),OC中單根類(lèi)是NSObject(祖宗)

  • 繼承單內(nèi)容:所有單實(shí)例變量和方法

  • 如果子類(lèi)不滿(mǎn)意父類(lèi)的方法的實(shí)現(xiàn),可以重寫(xiě)父類(lèi)的方法


self     自身的對(duì)象

super   不是父類(lèi)的對(duì)象,而是調(diào)用父類(lèi)的方法,

              是編譯 器指令,并非對(duì)象,  是給super法消息,可以執(zhí)行父類(lèi)中實(shí)現(xiàn)的方法;


子類(lèi)可以重寫(xiě)父類(lèi)方法,即:子類(lèi)即有自己的實(shí)現(xiàn),又又父類(lèi)的實(shí)現(xiàn),如果想從父類(lèi)調(diào)用方法,需要用到super發(fā)送消息;


初始化過(guò)程

  1. 執(zhí)行父類(lèi)中到初始化方法(向上遞歸到NSObject類(lèi)中的初始化方法)

  2. 從根類(lèi)NSObject開(kāi)始執(zhí)行初始化方法

  3. 判斷父類(lèi)中初始化是否成功,即self是否存在

  4. 完成對(duì)象的初始化設(shè)置,返回對(duì)象

  5. 初始化子類(lèi)實(shí)例變量


制定初始化

  • 通常把參數(shù)最全的初始化方法作為制定初始化方法

  • 制定初始化方法負(fù)責(zé)向super發(fā)送初始化消息

  • 每個(gè)類(lèi)都會(huì)有指定的初始化方法

  • 如果每一個(gè)類(lèi)只有一個(gè)初始化方法,那它也是指定初始化方法


初始化方法特征

  1. 初始化發(fā)方是“-”方法

  2. id或者instancetype類(lèi)型的返回值

  3. 以init開(kāi)頭

  4. 可以帶0到多個(gè)參數(shù)

  5. 內(nèi)部實(shí)現(xiàn):先執(zhí)行super到初始化方法,在初始化自身變量,return self;


便利構(gòu)造器

  • 便利構(gòu)造器是“+“方法,返回本類(lèi)型 的實(shí)例,方法名以類(lèi)名開(kāi)頭

  • 可以有0到多個(gè)參數(shù)

  • 內(nèi)部實(shí)現(xiàn):封裝類(lèi)alloc和初始化方法,使用起來(lái)更加簡(jiǎn)潔。


#import

  • 導(dǎo)入頭文件,即:導(dǎo)入文件中的內(nèi)容到當(dāng)前類(lèi)

  • #import “ ”導(dǎo)入自定義類(lèi),#import < >導(dǎo)入類(lèi)庫(kù)中的頭文件

  • 功能類(lèi)似C語(yǔ)言中的#include,但是可以避免頭文件被重復(fù)導(dǎo)入

  • 容易出現(xiàn)循環(huán)導(dǎo)入問(wèn)題


@class

  • 告訴編譯器@class后的字符串作為類(lèi)名使用,并未導(dǎo)入類(lèi)的接口內(nèi)容

  • 有效避免嵌套循環(huán)導(dǎo)入


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI