《Objective-C入門教程》筆記

封裝

類的封裝驯镊,就是在定義一個類時萤皂,為類中的成員變量設(shè)置調(diào)用范圍撒穷,使其不能直接被其他類訪問,同時裆熙,又提供了get和set方法端礼,分別用于獲取和設(shè)置成員變量的值禽笑。set和get方法是封裝的重要體現(xiàn)。

  • set方法的語法格式
- (void) set變量名: (變量類型)變量名;
  • get方法的語法格式
- (變量類型)變量名;

繼承

一個類繼承另一個類的語法格式為:

@interface 子類名: 父類名

子類可以對父類方法進行重寫蛤奥,但重寫方法后佳镜,父類的方法會被覆蓋,子類對象將無法訪問父類被重寫的方法凡桥。即使用super關(guān)鍵字蟀伸,用于訪問父類中的方法,語法格式如下:

[super 父類方法名: 參數(shù)列表];

若在對象方法中使用super關(guān)鍵字缅刽,那么就會調(diào)用父類中的對象方法啊掏,若在類方法中使用super關(guān)鍵字,那么就會調(diào)用父類的方法衰猛。

多態(tài)

在同一個方法中迟蜜,由于參數(shù)類型不同而導(dǎo)致執(zhí)行效果各異的現(xiàn)象就是多態(tài)。

對象的類型轉(zhuǎn)換

將子類對象當做父類使用時不需要任何的顯式聲明啡省,但此時不能通過父類變量去調(diào)用子類中的某些方法娜睛。

Animal *a1 = [[Dog alloc] init];
[a1 print];

父類對象若想調(diào)用子類的某些方法時,首先需要將父類對象強轉(zhuǎn)為子類對象卦睹。

Animal *a1 = [[Dog alloc] init];
Dog *d = (Dog *)a1;
[d print];

但以下這種方式還是錯誤的:

Cat *a1 = [[Dog alloc] init];
Dog *d = (Dog *)a1;
[d print];

因為Cat類型的指針和Dog類型初始化的對象不匹配畦戒,Dog類的實例對象無法被Cat類型的指針變量引用,因此结序,多態(tài)僅限于父類指針指向子類對象障斋。

self語法

避免使用self調(diào)用方法本身,會造成死循環(huán)笼痹。

- (void)test {
    NSLog(@"調(diào)用test方法");
    [self test];
}

以上這種是錯誤的配喳。

點語法

避免在set、get方法中使用點語法:

- (void)setAge: (int)age {
    NSLog(@"調(diào)用set方法");
    self.age = age;
}

因為self.age = age和[self setAge:age]是等價的凳干,導(dǎo)致死循環(huán)。

屬性

  • 訪存方法名
    一個屬性的訪問和存儲方法默認的方法名分別是propertyName和setPropertyName被济。有一個方法名name救赐,訪問和設(shè)置該屬性的方法分別為name和setName。但如果某些屬性是Boolean類型只磷,則需要在get方法上添加is作為前綴:
@property (nonatomic, getter = isOn) BOOL on;

內(nèi)存管理

在OC中经磅,變量存儲在棧中,對象存儲在堆中钮追,棧中的內(nèi)存空間系統(tǒng)會自動回收预厌,而堆中的內(nèi)存空間是動態(tài)分配的,系統(tǒng)很難進行自動回收元媚。

引用計數(shù)器操作

創(chuàng)建對象時轧叽,引用計數(shù)值為1苗沧,當進行一次retain操作后,引用計數(shù)值變?yōu)?炭晒,接著進行一次release操作待逞,引用計數(shù)值變?yōu)?,最后進行一次release操作后网严,會調(diào)用dealloc方法銷毀對象识樱。
在進行最后一次release操作后,沒有打印出引用計數(shù)值為0的原因是震束,對象在此刻的引用計數(shù)已經(jīng)變?yōu)?并且被釋放怜庸,如果還要求對象調(diào)用retainCount方法并顯示當前的引用計數(shù),就會出現(xiàn)野指針錯誤垢村。
在編寫代碼時休雌,如果對象已經(jīng)釋放,卻還要強行使用對象肝断,就會出現(xiàn)野指針錯誤杈曲,被釋放的對象就叫做僵尸對象。例如一個Person對象p胸懈,在創(chuàng)建時担扑,內(nèi)存會開辟一塊空間用于存儲該對象,同時棧內(nèi)也開辟一塊空間用于存儲指針變量p趣钱,且p指向內(nèi)存中創(chuàng)建的對象涌献。當它的計數(shù)器為0時,所指向的內(nèi)存空間就會被立可收回首有。但是對象沒有被馬上銷毀燕垃,這時的對象就會變成僵尸對象。雖然指向的內(nèi)存空間被收回了井联,但是對象沒有馬上消失卜壕,它所指向的內(nèi)存空間地址的指向還在。這時的這個指針就被稱為野指針烙常。
對象的內(nèi)存空間此時已經(jīng)不能訪問轴捎,若繼續(xù)訪問對象,就會出現(xiàn)EXC_BAD_ACCESS的錯誤提示蚕脏。為了防止這個對象被繼續(xù)使用侦副,需要對這個對象進行清空操作:

     p = nil;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市驼鞭,隨后出現(xiàn)的幾起案子秦驯,更是在濱河造成了極大的恐慌,老刑警劉巖挣棕,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件译隘,死亡現(xiàn)場離奇詭異亲桥,居然都是意外死亡,警方通過查閱死者的電腦和手機细燎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門两曼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人玻驻,你說我怎么就攤上這事悼凑。” “怎么了璧瞬?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵户辫,是天一觀的道長。 經(jīng)常有香客問我嗤锉,道長渔欢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任瘟忱,我火速辦了婚禮奥额,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘访诱。我一直安慰自己垫挨,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布触菜。 她就那樣靜靜地躺著九榔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涡相。 梳的紋絲不亂的頭發(fā)上哲泊,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音催蝗,去河邊找鬼切威。 笑死,一個胖子當著我的面吹牛生逸,可吹牛的內(nèi)容都是我干的牢屋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼槽袄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锋谐?” 一聲冷哼從身側(cè)響起遍尺,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涮拗,沒想到半個月后乾戏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迂苛,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年鼓择,在試婚紗的時候發(fā)現(xiàn)自己被綠了三幻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡呐能,死狀恐怖念搬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情摆出,我是刑警寧澤朗徊,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站偎漫,受9級特大地震影響爷恳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜象踊,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一温亲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杯矩,春花似錦栈虚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逆害,卻和暖如春头镊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背魄幕。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工相艇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纯陨。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓坛芽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親翼抠。 傳聞我的和親對象是個殘疾皇子咙轩,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容