偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

詳解Objective-C最基礎(chǔ)語(yǔ)法和基礎(chǔ)類型

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

Objective-C最基礎(chǔ)語(yǔ)法和基礎(chǔ)類型是本文要講解的內(nèi)容,不多說(shuō),我們先來(lái)看內(nèi)容,我對(duì)Objective-C了解還不深,只知道一些最基礎(chǔ)的東西,總結(jié)一下。

基礎(chǔ)數(shù)據(jù)類型

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

NSInteger、NSUInteger、CGFloat

這幾個(gè)類型跟C里的類型基本是一樣的,但還是稍有不同,這其實(shí)是“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  

也就是說(shuō)當(dāng)需要使用int類型的變量的時(shí)候,可以像寫C的程序一樣,用int,也可以用NSInteger,但更推薦使用NSInteger,因?yàn)檫@樣就不用考慮設(shè)備是32位的還是64位的。

BOOL

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

NSNumber

有人說(shuō)既然都有了NSInteger等這些基礎(chǔ)類型了為什么還要有NSNumber?它們的功能當(dāng)然是不同的。

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

  1. NSArray *array = [[NSArray alloc]init];  
  2. [array addObject:3];//會(huì)編譯錯(cuò)誤  

這樣是會(huì)引發(fā)編譯錯(cuò)誤的,因?yàn)镹SArray里面放的需要是一個(gè)類,但‘3’不是。這個(gè)時(shí)候需要用到NSNumber:

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

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

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

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

 一個(gè)NSString變量賦值了之后不能改變其值(當(dāng)然可以重新給它賦其他的值),當(dāng)需要使用可變的字符串的時(shí)候可以使用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里面的兩個(gè)集合。顧名思義,NSArray的容積是固定的,而NSMutableArray的是可變的,當(dāng)添加的對(duì)象多余容積時(shí)會(huì)自動(dòng)擴(kuò)增。存放入集合中的一定是一個(gè)類的實(shí)例。 初始化一個(gè)NSArray的代碼如:

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

NSArray常用的屬性當(dāng)然就是count了,比如

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

當(dāng)要判斷一個(gè)集合里面是否包含某個(gè)元素的時(shí)候需要注意,使用的方法跟.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的字典集合,跟其他語(yǔ)言的字典類似,跟NSArray一樣,當(dāng)直接調(diào)添加若干個(gè)對(duì)象的初始化方法時(shí),要以nil結(jié)尾,比如:

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

當(dāng)需要判斷是否包含某個(gè)元素的時(shí)候,不是調(diào)用contain方法,而是直接判斷返回的值是不是nil,比如:

  1.  if ([dic objectForKey:@"key3"]){  
  2. //這里的代碼不會(huì)執(zhí)行,因?yàn)閗ey3返回的是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     

日期和時(shí)間。OObjective-C里面的日期類使用起來(lái)比較復(fù)雜,即使是實(shí)現(xiàn)簡(jiǎn)單的加一天減一個(gè)小時(shí)這樣的操作都要經(jīng)過(guò)很多的代碼從能實(shí)現(xiàn),這里只是一帶而過(guò),在其他的文章里會(huì)重新提到。

獲取當(dāng)前時(shí)間的代碼為:

  1. NSDate *today = [NSDate date];  

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

nil

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

id

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

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

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

selector是個(gè)非常特殊的類型,有點(diǎn)類似與函數(shù)指針,可以把一個(gè)函數(shù)當(dāng)作參數(shù)來(lái)傳遞。這個(gè)需要專門討論

小結(jié):關(guān)于Objective-C最基礎(chǔ)語(yǔ)法和基礎(chǔ)類型的內(nèi)容介紹完了,希望本文對(duì)你會(huì)有所幫助,更多關(guān)于Objective-C的更多內(nèi)容請(qǐng)參考編輯推薦。

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-09 15:53:28

2010-11-04 16:32:00

Objective-C

2011-08-17 11:15:22

Objective-C語(yǔ)法

2011-07-18 16:36:51

Objective-C XCode

2011-05-11 15:45:50

內(nèi)存管理Objective-C

2011-08-04 14:58:37

Objective-C Cocoa NSString

2011-08-18 15:19:28

XcodeObjective-C語(yǔ)法

2011-07-06 14:12:14

Objective-C

2011-05-11 13:54:08

Objective-C

2011-08-02 13:16:36

Objective-C 語(yǔ)法 函數(shù)

2014-04-30 10:16:04

Objective-CiOS語(yǔ)法

2011-07-08 18:44:09

Objective-C Self Super

2011-07-07 17:04:33

iPhone Action Objective-

2011-07-18 14:59:20

iPhone Objective-

2011-07-29 16:16:30

Objective-c block

2011-08-17 10:58:59

Objective-C構(gòu)造函數(shù)

2011-07-29 15:47:21

iPhone開發(fā) Objective- C

2011-08-04 09:56:30

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

2011-04-08 10:51:17

Objective-CiOS

2015-10-08 10:01:10

Objective-CLayout
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)