Objective-C總結(jié)----2.如何編寫(xiě)一個(gè)類(lèi)(下)

Objective-C2.0發(fā)布莺奔,新特性:自動(dòng)聲明欣范、補(bǔ)全屬性、點(diǎn)語(yǔ)法令哟,大大提高了開(kāi)發(fā)效率恼琼,現(xiàn)在我將用自動(dòng)聲明屬性的方法重構(gòu)這個(gè)類(lèi)。

自動(dòng)屬性聲明只可在類(lèi)接口屏富、分類(lèi)接口晴竞、協(xié)議中聲明

  • 在KNZPerson.h中,將成員變量_age的set/get方法聲明刪除掉狠半,然后聲明三個(gè)成員屬性:name噩死、age颤难、sex
    <code>
    //
    // KNZPerson.h
    // 自定義類(lèi)
    //
    // Created by 李陽(yáng) on 2016/10/7.
    // Copyright ? 2016年 kenzo. All rights reserved.
    //
    #import <Foundation/Foundation.h>
    @interface KNZPerson : NSObject</br>
    @property(nonatomic,copy)NSString *name;
    @property(nonatomic,assign)int age;
    @property(nonatomic,assign)BOOL sex;</br>
    -(instancetype)initWithName:(NSString *)name age:(int)age sex:(BOOL)sex;
    +(void)speak;
    -(void)talk;
    @end
    </code>

  • 在KNZPerson.m中,將成員變量聲明和成員變量_age的set/get方法實(shí)現(xiàn)刪除掉
    <code>
    //
    // KNZPerson.m
    // 自定義類(lèi)
    //
    // Created by 李陽(yáng) on 2016/10/7.
    // Copyright ? 2016年 kenzo. All rights reserved.
    //
    #import "KNZPerson.h"
    @implementation KNZPerson
    -(instancetype)initWithName:(NSString *)name age:(int)age sex:(BOOL)sex
    {
    self = [super init];
    if (self) {
    _name = name;
    _age = age;
    _sex = sex;
    }
    return self;
    }
    +(void)speak
    {
    NSLog(@"你好甜滨!speak!");
    }
    -(void)talk
    {
    NSLog(@"名字:%@,年齡:%d,男的:%d",_name,_age,_sex);
    }
    @end
    </code>

  • 運(yùn)行
    <code>
    2016-10-08 08:39:23.815602 自定義類(lèi)[26131:1582661] 名字:kenzo,年齡:28,男的:1
    2016-10-08 08:39:23.815805 自定義類(lèi)[26131:1582661] 名字:lucy,年齡:20,男的:0
    2016-10-08 08:39:23.815843 自定義類(lèi)[26131:1582661] person:29 歲,person2:21 歲
    Program ended with exit code: 0
    </code>

  • 運(yùn)行結(jié)果沒(méi)有改變乐严,重構(gòu)類(lèi)最大特點(diǎn)就是優(yōu)化了類(lèi)內(nèi)部代碼而外部卻沒(méi)有絲毫影響。

自動(dòng)屬性聲明:@property

  • 子類(lèi)可以繼承父類(lèi)在.h文件中聲明的屬性衣摩,不可以繼承在類(lèi)擴(kuò)展中聲明的屬性。
  • 聲明的屬性自動(dòng)生成對(duì)應(yīng)的成員變量
    • 比如:@property(nonatomic,assign)int age;捂敌,自動(dòng)生成成員變量_age(成員變量為@private私有類(lèi)型艾扮,子類(lèi)不可以訪問(wèn)),set方法-(void)setAge:(int)age,get方法-(int)age.
  • 格式:@property(多線程特性占婉,讀寫(xiě)特性泡嘴,內(nèi)存管理特性)屬性類(lèi)型 屬性名稱
    • 多線程特性:nonatomic,atomic
    • 讀寫(xiě)特性:readwrite逆济,readonly
    • 內(nèi)存管理特性:strong酌予,weak,copy奖慌,unsafe-unretain抛虫,retain,assign简僧。

詳情請(qǐng)看:自動(dòng)屬性聲明->屬性特性

這樣我們重構(gòu)了一個(gè)KNZPerson類(lèi)建椰,聲明了三個(gè)屬性,無(wú)需成員變量聲明和set/get方法聲明與實(shí)現(xiàn)岛马,大大地簡(jiǎn)化了代碼量棉姐。蘋(píng)果官方建議使用屬性聲明來(lái)代替成員變量聲明,有必要的時(shí)候才聲明成員變量啦逆。

  • 點(diǎn)語(yǔ)法
    Objective-C提供了新的訪問(wèn)成員變量方法:點(diǎn)語(yǔ)法
    person.屬性 = >在“=”左邊相當(dāng)于相當(dāng)于set方法伞矩,在“=”右邊或打印代替占位符位置時(shí)相當(dāng)于get方法。
    使用點(diǎn)語(yǔ)法重寫(xiě)代碼
    <code>
    [person setAge:29];
    [person2 setAge:21];
    NSLog(@"person:%d 歲,person2:%d 歲",[person age],[person2 age]);
    </code>
    如下
    <code>
    person.age = 29;//自動(dòng)轉(zhuǎn)換為[person setAge:29];
    person2.age = 21;//自動(dòng)轉(zhuǎn)換為[person2 setAge:21];
    NSLog(@"person:%d 歲,person2:%d 歲",person.age,person2.age);//自動(dòng)轉(zhuǎn)換為[person age],[person2 age];
    </code>

  • 打印結(jié)果一樣

注意:使用點(diǎn)語(yǔ)法實(shí)際也是轉(zhuǎn)換為調(diào)用set/get方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末夏志,一起剝皮案震驚了整個(gè)濱河市乃坤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盲镶,老刑警劉巖侥袜,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異溉贿,居然都是意外死亡枫吧,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)宇色,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)九杂,“玉大人颁湖,你說(shuō)我怎么就攤上這事±。” “怎么了甥捺?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)镀层。 經(jīng)常有香客問(wèn)我镰禾,道長(zhǎng),這世上最難降的妖魔是什么唱逢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任吴侦,我火速辦了婚禮,結(jié)果婚禮上坞古,老公的妹妹穿的比我還像新娘备韧。我一直安慰自己,他們只是感情好痪枫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布织堂。 她就那樣靜靜地躺著,像睡著了一般奶陈。 火紅的嫁衣襯著肌膚如雪易阳。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天尿瞭,我揣著相機(jī)與錄音闽烙,去河邊找鬼。 笑死声搁,一個(gè)胖子當(dāng)著我的面吹牛黑竞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疏旨,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼很魂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了檐涝?” 一聲冷哼從身側(cè)響起遏匆,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谁榜,沒(méi)想到半個(gè)月后幅聘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窃植,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年帝蒿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巷怜。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡葛超,死狀恐怖暴氏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绣张,我是刑警寧澤答渔,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站侥涵,受9級(jí)特大地震影響沼撕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜独令,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一端朵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧燃箭,春花似錦、人聲如沸舍败。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)邻薯。三九已至裙戏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厕诡,已是汗流浹背累榜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灵嫌,地道東北人壹罚。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像寿羞,于是被迫代替她去往敵國(guó)和親猖凛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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