IPHONE 开发 9 -- Object C static关键字,数组对象,词典,动态词典,集合对象,函数调用关系...
警告:??static 寫在interface外面編譯是沒有錯誤的,但是編譯器會報警告,這么說這樣的寫法是不被編輯器認可的。
錯誤:static 寫在interface里面會直接報錯,顯然這樣的語法是不被認可的。
static關鍵字聲明的變量必須放在implementation外面,或者方法中,如果不為它賦值默認為0,它只在程序開機初始化一次。
+(void)addCount 因為標識了+號,所以這個方法無需使用這個類的對象調用。直接使用類名方可調用這個方法。
?
?
使用數組對象創建的數組功能非常強大,在Java語言或者C語言中定義的數組必須滿足數組中的每一個元素必須是同樣的類型。而Objective-C語言可以在Array數組中放任意類型的數據,值得注意的是只能放指向這個對象的指針,如果直接放int ,char,double 等等,是不行的.
?
?
[array count] : 得到這個對象數組的長度。
?
[array objectAtIndex 0]: 傳入數組腳標的id 得到數據對象。
?
?
[arrayWithObjects; ...] :向數組對象初始化賦值。這里可以寫任意對象的指針,結尾必須使用nil
?
詞典類的存在就是為了解決在大量數據中查找方便,因為它是通過key直接找到value所以速度很快,避免一個個的遍歷尋找造成的效率低下,善用字典類會幫你的程序提速
?
在Objective-C語言中詞典對象就是做這個事情的,不過在同一個詞典對象中可以保存多個不同類型的數據,不像Java與C 只能保存聲明的相同類型的數據,它的關鍵字為NSDictionary與NSMutableDictionary。閱讀過我之前文章的朋友應該從關鍵字的結構就可以看出這兩個的區別。很明顯前者為不可變詞典,或者為可變詞典。
1.創建不可變詞典
[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用鍵值對兒直接創建詞典對象,結尾必需使用nil標志結束。
[NSDictionary initWithObjectsAndKeys:..] :使用鍵值對兒初始化詞典對象,結尾必需使用nil標志結束。
[dictionary count]: 得到詞典的長度單位。
[dictionary keyEnumerator]: 將詞典的所有KEY儲存在NSEnumerator中,NSEnumerator很像Java語言中的迭代器,使用快速枚舉可以遍歷詞典中所有儲存KEY值。
[dictionary??objectEnumerator]: 將詞典的所有value儲存在NSEnumerator中,用法和上面差不多可用來遍歷KEY對應儲存的Value值。
[dictionary objectForKey:key]: 通過傳入KEY對象可以拿到當前KEY對應儲存的值。
?
?
2.創建可變詞典對象
NSMutableDictionary 是NSDictionary的子類,所以繼承了NSDictionary的方法。
[NSMutableDictionary dictionaryWithCapacity:10] : 創建一個可變詞典初始指定它的長度為10.,動態的添加數據如果超過10這個詞典長度會自動增加,所以不用擔心數組越界。
[NSMutableDictionary initWithCapacity:10]??:只是初始化一個詞典的長度為10。
[dictionary setObject: @"雨松MOMO" forKey: @"name"] :向可變的詞典動態的添加數據,這里的key是name 值是雨松MOMO。如果詞典中存在這個KEY的數據則直接替換這個KEY的值。
[dictionary removeAllObjects..] : 刪除掉詞典中的所有數據。
[dictionary removeObjectForKey..] :刪除掉詞典中指定KEY的數據。
集合對象
集合對象的關鍵字是NSSet與NSMutableSet。前者是不可變集合,后者是可變集合,Objective-C語言中大部分數據結構都存在可變與不可變兩種數據。這里的集合很像Java語言與C語言中的Set,用法基本一樣。但是在Objective-C語言中同一個集合可以儲存不同對象的數據。下面分享一個例子就很清楚的看出。
?
1. 創建不可變集合對象
?
[NSNumber numberWithInteger:9527]; 因為集合中只能存放對象,所以如果要存數字的話要把數字轉換成對象方可存入。
?
[NSSet setWithObjects:...]:創建集合對象,并且初始化集合中的數值,結尾必需使用nil標志。
?
[set count] ; 得到這個結合對象的長度。
?
[set containsObject:...]: 判斷這個集合中是否存在傳入的對象,返回Bool值。
?
[set objectEnumerator]: 將集合放入迭代器。
?
[enumerator nextObject]:得到迭代器中的下一個節點數據,使用while遍歷這個迭代器,方可遍歷集合對象中的對象。
?
[set isEqualToSet : objset]:判斷兩個集合是否完全相等,返回Bool值。
?
[set isSubsetOfSet: objset]:判斷集合中的所有數據是否都相等與objeset集合中,返回Bool值。
?
[set istersectSet:objset]:判斷集合中的至少有一個數據相等與objeset集合中,返回Bool值。
?
Objective-C的函數調用函數調用首先用 [ ] 來包住實現代碼。函數調用的對象叫做接收器(receiver,可以理解為對象實例)。
用Interface Builder配置的控件Outlet就是接收器。接收器與函數(Objective-C中叫做消息)之間用空格分開。用[ ]括住的一個整體就是一次函數調用。
你也可以嵌套的使用這樣的函數調用形式。比如從Text Field控件中取得輸入值的時候,就是先在「motone」中執行了「text」,取出具體的文字對象,然后以其為接收器來執行「intValue」消息。這樣,我們最終得到的結果就是一個整形的值。
計算與表示結果
接下來我們來計算打折后的價格。由商品原價「kakaku」和由Segmented Control控件得到的打折率需要計算出商品打折后的價格。比如選擇最左邊20%的時候,計算公式如下:
小數后面的「f」表示「float」。如果將整數作為小數來使用的情況下,使用「1.f」而不是「1f」。不同的折扣率需要不同的計算方法,這里使用switch語法來區分各種情形:
?
總結
以上是生活随笔為你收集整理的IPHONE 开发 9 -- Object C static关键字,数组对象,词典,动态词典,集合对象,函数调用关系...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 柴油机制造商QMD谈System Cen
- 下一篇: 浅析网络编程之Socket模型