Chapter7 More on Classes

Separate Interface and Implementation Files
即頭文件與源代碼文件分開闯团,這一風格C++也有近忙。
在Objective-C中聲明一般寫在.h文件中抄罕,而定義寫在.m文件中。
同樣包含頭文件的可以是<>也可以是””弥激,這一點完全和C++是一樣的宿崭,前者首先在系統(tǒng)頭文件中搜索,后者在用戶頭文件中搜索髓削。
類中的@implementation部分包含的是類的私有信息举瑰,這包括類的成員變量和類的實現(xiàn)代碼。
Synthesized Accessor Methods
Objective-C中有專門的屬性一說蔬螟,即此迅,通過@porperty標識的實例變量,它位于類的@interface中,如下圖所示:


一旦你這樣做了就無需另在@implementation中再次聲明實例變量了耸序。
然后在類的@implementation中用@synthesize來對@property中的變量加以限定就可以讓XCode自動產(chǎn)生出它們的存取器(getter和setter)忍些。如下圖所示:

其實你不寫@synthesize部分也能讓編譯器自動產(chǎn)生存取器,只不過這樣產(chǎn)生的存取器名字前面有個下劃線坎怪。
我在想這樣編譯器自動產(chǎn)生存取器會不會造成數(shù)據(jù)的不安全罢坝,當然你可以選擇不寫@property部分。
Accessing Properties Using the Dot Operator
所以可以看出在Objective-C類中的實例成員通常被稱作屬性搅窿。
想獲取某屬性成員的值嘁酿,你可以以以下方式寫出來:

如果用存取器的話,你可以如下寫出來:

這個其實就是getter的變種男应,同樣闹司,也有setter的變種,如下所示:

這個你也可以寫成非存取器的方式:

普通的方法你也可以點出來沐飘,如下圖所示:

但是不推薦這樣寫游桩,因為這種寫法是存取屬性專用,這種風格可以讓你的代碼涇渭分明耐朴。
Multiple Arguments to Methods
Objective-C中的多參數(shù)的方法的聲明式很奇怪借卧,如下所示:

它這個方法的名字不只一個,除了一個setTo還有一個over筛峭,然后每個名字后面跟了一份冒號铐刘,冒號后面是形參的類型和名稱∮跋可以看出有多少個冒號就有多少個形參镰吵。這種形式的方法可以簡寫成setTo:over:它的實現(xiàn)如下所示:

它的使用方式如下所示:

Methods without Argument Names
上述這種寫法是可選的,因為整個方法名變成了一條消息語句俯艰,而不是單單一個名詞而已捡遍,這樣可讀性比較強,不過我個人不太習慣竹握,Objective-C允許你按下面這種方式寫:

這種方法的調(diào)用方式如下所示:

像這樣的方法可以簡單寫成set::以表示它有兩個參數(shù)画株。
Local Variables
未被初始化的對象默認會被初始化為nil。
Method Arguments
有關函數(shù)傳參啦辐,針對于內(nèi)置類型而言谓传,這個參數(shù)傳遞機制是值傳遞。
而對于對象而言則是傳遞引用芹关。
The static Keyword
static變量沒有必要初始化续挟,因為它默認就是0。
The self Keyword
這是Objective-C中的新關鍵字侥衬,它的作用有點像this指針诗祸,即跑芳,對象實例自身。
你可以用它引用該實例自身的方法直颅,這個方法被稱為消息的接收方博个。
用法如下:

實例如下:

Allocating and Returning Objects from Methods
和C++語言不同,Objective-C中的函數(shù)返回對象時該對象并不是一個臨時對象功偿,而C++在返回對象時是返回一個臨時對象盆佣,當這個臨時對象被賦給目標左值對象后就被銷毀。
Objective-C中函數(shù)返回對象時其實是把該對象的存儲地址返回給了目標左值對象械荷,更確切地說是個指針共耍,這個行為有點像C++中的右值引用。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吨瞎,一起剝皮案震驚了整個濱河市痹兜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌关拒,老刑警劉巖佃蚜,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庸娱,死亡現(xiàn)場離奇詭異着绊,居然都是意外死亡,警方通過查閱死者的電腦和手機熟尉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門归露,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人斤儿,你說我怎么就攤上這事剧包。” “怎么了往果?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵疆液,是天一觀的道長。 經(jīng)常有香客問我陕贮,道長堕油,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任肮之,我火速辦了婚禮掉缺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘戈擒。我一直安慰自己眶明,他們只是感情好,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布筐高。 她就那樣靜靜地躺著搜囱,像睡著了一般丑瞧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜀肘,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天嗦篱,我揣著相機與錄音,去河邊找鬼幌缝。 笑死灸促,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的涵卵。 我是一名探鬼主播浴栽,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼轿偎!你這毒婦竟也來了典鸡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤坏晦,失蹤者是張志新(化名)和其女友劉穎萝玷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昆婿,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡球碉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了仓蛆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睁冬。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖看疙,靈堂內(nèi)的尸體忽然破棺而出豆拨,到底是詐尸還是另有隱情,我是刑警寧澤能庆,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布施禾,位于F島的核電站,受9級特大地震影響搁胆,放射性物質(zhì)發(fā)生泄漏弥搞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一丰涉、第九天 我趴在偏房一處隱蔽的房頂上張望拓巧。 院中可真熱鬧,春花似錦一死、人聲如沸肛度。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽承耿。三九已至冠骄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間加袋,已是汗流浹背凛辣。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留职烧,地道東北人扁誓。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像蚀之,于是被迫代替她去往敵國和親蝗敢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

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

  • 蘋果官方文檔翻譯 《Objective-C語言編程》(Programming with Objective-C) ...
    fever105閱讀 25,585評論 19 130
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理足删,服務發(fā)現(xiàn)寿谴,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法失受,類相關的語法讶泰,內(nèi)部類的語法,繼承相關的語法拂到,異常的語法痪署,線程的語...
    子非魚_t_閱讀 31,581評論 18 399
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,679評論 0 9
  • Failed to establish sessionError while Installing APKs 報錯...
    Jiang_bug閱讀 207評論 0 0