概要:本文循序漸進地介紹了@property關鍵字的使用,以及為什麼要這樣使用,也許了解了過去的用法,才更能體會如今用法的方便把!
我在前文說過,類和c語言中的結構體很像,也有一些變數用來形容事物的屬性(成員變數),既然有屬性就需要進行初始化,下面就來介紹傳統初始化的方式
首先讓我們來了解一下傳統get、set方法的寫法,從字面就可以看出get方法用來獲取值,set方法用來設定值,get、set方法書寫有一些規範需要遵守。首先讓我們先來看一段**,結合**來分析get、set方法的書寫規範。
(1)set方法書寫方法:
1)一定是物件方法
2)沒有返回值
3)set開頭,去掉下劃線的例項變數名首字母大寫
4)有引數,引數型別和例項變數型別一致
5)形參的命名方式為去掉下劃線的例項變數名
(2)get方法書寫方法
1)一定是物件方法
2)一定有返回值,返回值型別與成員變數型別一致
3)方法名稱是去掉下劃線的例項變數名
這樣乍一看起來,要注意的地方可真是不少,要多寫寫才能自然地掌握,不過還好後續還有更簡便的工具來讓我們設定例項變數。
(3)get、set方法的呼叫
傳統方法:
也可以使用「點語法」
但有幾點注意事項:
1)把原來的[stu setage:10]替換成了stu.age = 10。這兩種寫法是完全等價的。即這裡的stu.age並不是代表直接訪問stu物件的成員變數age,而是編譯器遇到stu.age = 10的時候 會自動將**展開成[stu setage:10]
2)把原來的int age = [stu age]替換成了int age = stu.age。這兩種寫法又是完全等價的, stu.age並不是直接訪問stu物件的成員變數age,而是編譯器遇到int age = stu.age的時候會自 動將**展開成int age = [stu age]
3)oc點語法的本質是方法呼叫,不是直接訪問成員變數。至於這個點語法代表的是get方法還是 set方法,那就取決於你是取值還是設值(也可以理解為點語法是在「=」的左側還是右側,左 側:如 stu.age=…. 這就是呼叫set方法,右側 … = stu.age 這就是呼叫get方法),取值 就是get方法,設值就是set方法。
看到這裡,可能已經有人要暈了,訪問個成員變數而已,要不要這麼麻煩啊,規矩還這麼多,有沒有更簡單的方法呢,下面我們就來介紹簡便方法啦。
@property告訴編譯器宣告屬性的訪問器(getter/setter)方法,免去我們手工書寫get和set方法繁瑣的**
@property 型別名 方法名
1) @synthesize age; 表示生成.h中變數age的get和set方法的實現,如果要使用@synthesize的話, 變數名要先在.h檔案中宣告
2)@property和@synthesize搭配使用,用於簡化set和get方法的定義和實現
但是顯然這樣還不夠簡便,我們還是需要先定義成員變數,然後再用@property關鍵字在.h檔案中宣告,還需要在@synthsize在.m檔案中實現,依舊很麻煩
xcode(4.4後)終極的解決方案是:@property int score;
成員變數定義、宣告、實現全套一體化實現
總結:經過循序漸進地演變,終於把成員變數初始化的方法從一開始的多檔案多函式操作精簡成只有一句話,讚嘆語法優美的同時也讓我感慨事物總是向越來越好越來越方便的方向發展的,也許人生也是如此吧,加油!
iOS概念入門學習 C語言 指標
概述 本文簡要介紹了指標的概念 定義方法和簡單地應用,指標是乙個十分複雜的工具,還包含各種類別,如 字串指標 結構體指標 函式指標等,此文僅只作入門而已。提起指標的意義,不得不說到變數的訪問方式,變數的訪問方式分為兩種 直接訪問和間接訪問。如下圖 直接訪問 變數的賦值和取值 通過變數名進行訪問值 間...
iOS概念入門學習 C語言 結構體
構造資料型別 構造資料型別是根據已定義的乙個或多個資料型別用構造的方法來定義的。也就是說,乙個構造 型別的值可以分解成若干個 成員 或 元素 每個 成員 都是乙個基本資料型別或又是乙個構造型別。在c語言中,構造型別有以下幾種 陣列型別 結構體型別 共用體 聯合 型別 結構體是一種構造型別,它是由若干...
iOS概念入門學習 C語言 字串
概要 本文介紹了字串的概念 定義方法和常用的函式,並用例項加以串聯以說明字串的用法。字串是位於雙引號中的字串行。字串即字元陣列。在記憶體中以 0 結束,所佔位元組比實際多乙個 注意 1.可以把乙個字元常量賦給乙個字元變數,但不能把字串常量賦給字元變數 2.c語言中沒有字串變數,可以用字元陣列來存放字...