自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解Objective-C最基礎語法和基礎類型

移動開發(fā) iOS
本文介紹的是詳解Objective-C最基礎語法和基礎類型,在Objective-C里面也可以使用C的基礎類型,比如int,float等我們先來看內容講解。

Objective-C最基礎語法和基礎類型是本文要講解的內容,不多說,我們先來看內容,我對Objective-C了解還不深,只知道一些最基礎的東西,總結一下。

基礎數(shù)據類型

Objective-C里面也可以使用C的基礎類型,比如int,float等,但一些Objective-C的基礎類型有與C的對應的,看上去很類似,卻提供了更多的功能和特性。比如string和NSString,string就是普通的C語言的字符串,而NSString是一個object,不僅包含了字符串,還有一些跟顯示相關的接口等,你可以直接在屏幕上打印輸出一個NSString,卻不能對string這樣操作。

NSInteger、NSUInteger、CGFloat

這幾個類型跟C里的類型基本是一樣的,但還是稍有不同,這其實是“type define”,比如NSInteger的定義是這樣的:

  1.  #if_LP64_||NS_BUILD_32_LIKE_64  
  2. typedef long NSInteger;  
  3. typedef unsigned long NSInteger;  
  4. #else  
  5. typedef int NSInteger;  
  6. typedef unsigned int NSInteger;  
  7. #endif  

也就是說當需要使用int類型的變量的時候,可以像寫C的程序一樣,用int,也可以用NSInteger,但更推薦使用NSInteger,因為這樣就不用考慮設備是32位的還是64位的。

BOOL

OC里面的bool值的取值是YES和NO,而不是TRUE和FALSE。

NSNumber

有人說既然都有了NSInteger等這些基礎類型了為什么還要有NSNumber?它們的功能當然是不同的。

NSInteger是基礎類型,但是NSNumber是一個類。如果想要存儲一個數(shù)值,直接用NSInteger是不行的,比如在一個Array里面這樣用:

  1. NSArray *array = [[NSArray alloc]init];  
  2. [array addObject:3];//會編譯錯誤  

這樣是會引發(fā)編譯錯誤的,因為NSArray里面放的需要是一個類,但‘3’不是。這個時候需要用到NSNumber:

  1. NSArray *array = [[NSArray alloc]init];  
  2.  [array addObject:[NSNumber numberWithInt:3]];   
  3. NSString、NSMutableString 

字符串一直是個比較復雜的類型,提供的功能很多,涉及的問題也比較多,比如字符串的比較、格式化、拼接等等,這可以專門開一個專題,這里只是簡單介紹一下。

Objective-C里面有個特殊的符號:“@”,這個符號大概的意思是表示“這是Objective-C的”。在使用NSString的使用雙引號的前面一定要加這個符號,否則就是普通的C字符串。而且NSString是一個類,定義一個NSString的變量的時候要使用指針。比如:

  1.  NSString *str = "a string";//這是錯誤的  
  2. NSString str =@"a string";//這也是錯誤的  
  3. NSString *str = @"a new string";//這是正確的  

 一個NSString變量賦值了之后不能改變其值(當然可以重新給它賦其他的值),當需要使用可變的字符串的時候可以使用NSMutableString。NSMutableString繼承值NSString,額外提供了一些改變值的方法。比如:

  1.  NSMutableString *str = @"";  
  2. [str appendString:@"hello "];//str = @"hello "  
  3. [str appendFormat:@"my number is:%d",1];//str = @"hello my number is 1"   
  4.  NSArray、NSMutableArray 

這是OC里面的兩個集合。顧名思義,NSArray的容積是固定的,而NSMutableArray的是可變的,當添加的對象多余容積時會自動擴增。存放入集合中的一定是一個類的實例。 初始化一個NSArray的代碼如:

  1. NSArray *array = [NSArray arrayWithObjects:obj1,obj2...,nil];//注意要以nil結尾,否則會有編譯警告  

NSArray常用的屬性當然就是count了,比如

  1. NSUInteger count = [array count];//  

當要判斷一個集合里面是否包含某個元素的時候需要注意,使用的方法跟.net里面的稍有不同,如:

  1. if ([array indexOfObject:obj3] == NSNotFound]{  
  2. //do something  
  3. }   
  4. NSMutableArray的使用方法跟NSArray的類似,常用的方法有:  
  5. + (NSMutableArray *)array;  
  6. -  (void)addOvject:(id)object;  
  7. - (void)removeObject:(id)object;  
  8. - (void)removeAllObjects;  
  9. - (void)insertObject:(id)object atIndex:(unsigned)index;   
  10. NSDictionary、NSMutableDictionary    

OC的字典集合,跟其他語言的字典類似,跟NSArray一樣,當直接調添加若干個對象的初始化方法時,要以nil結尾,比如:

  1. NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:obj1,@"key1",obj2,@"key2",nil];//注意以nil結尾  

當需要判斷是否包含某個元素的時候,不是調用contain方法,而是直接判斷返回的值是不是nil,比如:

  1.  if ([dic objectForKey:@"key3"]){  
  2. //這里的代碼不會執(zhí)行,因為key3返回的是nil  
  3. }   
  4. NSMutableDictionary的使用方法類似,常用的方法有:  
  5.  + (NSMultableDictionary *)dictionary;  
  6. - (void)addObject:(id)object forKey:(id)key;  
  7. - (void)removeObjectForKey:(id)key  
  8. - (void)removeAllObjects;   
  9. NSDate     

日期和時間。OObjective-C里面的日期類使用起來比較復雜,即使是實現(xiàn)簡單的加一天減一個小時這樣的操作都要經過很多的代碼從能實現(xiàn),這里只是一帶而過,在其他的文章里會重新提到。

獲取當前時間的代碼為:

  1. NSDate *today = [NSDate date];  

這里不得不發(fā)一些牢騷,很多人都說Objective-C是多么多么優(yōu)美的語言,但個人感覺有不少地方實在談不上優(yōu)美,就比如這個NSDate,功能是蠻強大的,但使用起來真的很不方便,對于新手而言完全是無從下手。這且不說,獲取當前時間居然用的不是today而date,如果沒了解過,誰會想到date=today?    

nil

Objective-C里面空指針對象是nil,而不是null。

id

Objective-C支持動態(tài)類型,也就是在寫代碼的時候不確定是聲明類型,在程序運行的時候從能判斷。動態(tài)類型的變量用id來聲明,比如:

 id tem = 1;//注意是id,而不是id *,除非你真的真的是想聲明一個這樣的指針

  1. tem = @"abc";  
  2. tem = [[myClass alloc]init];   
  3. @selector 

selector是個非常特殊的類型,有點類似與函數(shù)指針,可以把一個函數(shù)當作參數(shù)來傳遞。這個需要專門討論

小結:關于Objective-C最基礎語法和基礎類型的內容介紹完了,希望本文對你會有所幫助,更多關于Objective-C的更多內容請參考編輯推薦。

責任編輯:zhaolei 來源: 互聯(lián)網
相關推薦

2011-08-09 15:53:28

2010-11-04 16:32:00

Objective-C

2011-08-17 11:15:22

Objective-C語法

2011-07-18 16:36:51

Objective-C XCode

2011-08-04 14:58:37

Objective-C Cocoa NSString

2011-05-11 15:45:50

內存管理Objective-C

2011-08-18 15:19:28

XcodeObjective-C語法

2011-07-06 14:12:14

Objective-C

2011-08-02 13:16:36

Objective-C 語法 函數(shù)

2011-05-11 13:54:08

Objective-C

2014-04-30 10:16:04

Objective-CiOS語法

2011-07-08 18:44:09

Objective-C Self Super

2011-07-18 14:59:20

iPhone Objective-

2011-07-07 17:04:33

iPhone Action Objective-

2011-07-29 16:16:30

Objective-c block

2011-08-17 10:58:59

Objective-C構造函數(shù)

2011-07-29 15:47:21

iPhone開發(fā) Objective- C

2011-08-04 09:56:30

Objective-C 變量 數(shù)據類型

2011-04-08 10:51:17

Objective-CiOS

2015-10-08 10:01:10

Objective-CLayout
點贊
收藏

51CTO技術棧公眾號