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

Objective-C學(xué)習(xí)基礎(chǔ)筆記

移動開發(fā) iOS
Objective-C學(xué)習(xí)基礎(chǔ)筆記是本文要結(jié)束的內(nèi)容,主要介紹了我們在學(xué)習(xí)Objective-C中點點滴滴的內(nèi)容的一個積累,與友們分享,來啊哭呢內(nèi)容詳解。

Objective-C學(xué)習(xí)基礎(chǔ)筆記是本文要介紹的內(nèi)容,Cocoa由兩個框架構(gòu)成:Foundation Kit和Application Kit。Application包括所有用戶接口對象和高級類;Foundation框架中包括面向數(shù)據(jù)的低級類和數(shù)據(jù)種類,具有100多個類,例如NSString,NSArray,NSEnumerator,NSNumber等。相干文檔儲藏于/Developer/ADC Reference Library/documentation/index.html中。

1.常用數(shù)據(jù)種類

  1. typedef struct _NSRange{  
  2. unsigned int location;  
  3. unsigned int length;  
  4. }NSRange; 

表示相干事物的范圍,例如字符串中字符范圍可能數(shù)組中元素范圍等。location是范圍的起始位置,length元素個數(shù)。

創(chuàng)立措施:

  1. NSRange range; range.location = 1range.length = 4;  
  2. NSRange range = {1,4}; //C語言的聚合構(gòu)造賦值機(jī)制  
  3. NSRange range = NSMakeRange(1,4); //能夠在能夠利用函數(shù)的任何地方調(diào)用NSMakeRange。  
  4. typedef struct _NSPoint{  
  5. float x; float y;  
  6. }NSPoint;  
  7. typedef struct _NSSize{  
  8. float width; float height;  
  9. }NSSize;  
  10. typedef struct _NSRect{  
  11. NSPoint origin; NSSize size;  
  12. }NSRect; 

NSRect是一個矩形數(shù)據(jù)種類,NSPoint是起始點,NSSize存儲長度和寬度。 NSMakeRect() NSMakePoint().

這些常用的數(shù)據(jù)種類是C的struct而不是對象,在許多過程(例如GUI過程)中有許多臨時的點,大小和矩形去告終工作,所有的Objective-C對象都是動態(tài)分配的,這么是一個代價較高的壟斷,必需許多工夫。

2.字符串

Cocoa處理字符串的類NSString和它的子類NSMutableString。

  1. +(id)stringWithFormat:(NSString *)format,...; 

指能夠接受以逗號離別的多個參數(shù)。+指該措施為類措施,是屬于類對象。Obj-C在出產(chǎn)一個類的時候會創(chuàng)立一個代表類的類對象,包括指向超類的指針,類名和指向類措施列表的指針。還包括一個long數(shù)據(jù)nanjianyan.com,為新創(chuàng)立的類實例對象指定大小。-來開始聲明的為實例措施,這些實例措施可能在某個對象實例中運行。萬一某措施用來告終慣例功能例如創(chuàng)立一個實例對象可能拜會一些大局類數(shù)據(jù),等閑聲明為類措施。

-(unsigned int)length; 它能夠準(zhǔn)確處理國際字符串。中文,日文以及用Unicode國際字符規(guī)范的字符串。而在C中處理這些國際字符串很繁瑣,因為一個字符挪借空間肯那個多于一個字節(jié),strlen()只計算字節(jié)數(shù)的函數(shù)等閑不行。

-(BOOL)isEqualtoString:(NSString *)str; 而==計算符只推斷兩個字符串指針數(shù)值,未曾推斷他們所指向的對象。

  1. -(NSComparisonResult)compare:(NSString *)str options:(unsigned)mask; 

NSComparisonResult是一個enum型數(shù)據(jù)

  1. typedef enum _NSComparisonResult{  
  2. NSOrderedAscending = -1, NSOrderedSame, NSOrderedDescending  
  3. }NSComparisonResult; 

options是一個位掩碼,能夠用位或|來加選項符號。NSCaseInsensitiveSearch不判別大小寫字符,NSLiteralSearch判別大小寫,NSNumericSearch比起字符串字符個數(shù)。

  1. NSString *str1 = @"hello 1 world";  
  2. NSString *str2;  
  3. str2 = [NSString stringWithFormat:@"hello %d world",1];  
  4. if([str1 compare:str2  
  5. options:NSCaseInsensitiveSearch | NSNumericSearch]  
  6. == NSOrderedSame)  
  7. {} 

NSString一旦創(chuàng)立了就不能改換。能夠用它生成新的字符串,查找字符可能比擬。然而不能剔除可能增加字符??勺兊念怤SMutableString是NSString的子類。它們是在一個.h文件中。

  1. +(id)stringWithCapacity:(unsigned)capacity; 

創(chuàng)立一個capacity容量的字符串。先預(yù)分配一塊內(nèi)存存儲它,后續(xù)的壟斷速度會快許多。當(dāng)然也能夠用它父類NSString的類措施和實例措施都能夠利用。

  1. NSMutableString *friends;  
  2.  
  3. friends = [NSMutalbeString stringWithCapacity:50];  
  4. [friends appendString:@"James lilei lucy"]; //增加字符串到對象末路  
  5.  
  6. NSRange range;  
  7. range = [friends rangeOfString:@"lilei"]; //查找str2在str1中的范圍  
  8.  
  9. range.length++;  
  10. [friends deleteCharactersInRange:(NSRange)range]; //穿越范圍剔除字符 

3.聚集

  1. NSArray,NSMutalbeArray,NSEnumerator,NSDictionary 

NSArray類是一個存儲對象的有序列表。只存儲Objective-C對象不存儲C中大約數(shù)據(jù)種類(int,float,enum,struct)可能NSArray中隨即指針。同時也不存儲nil(對象的零值可能NULL值)。

NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"three",nil];do1k.com是以nil結(jié)尾的。這即便不能存儲nil的起因之一。

  1. for(int i=0;i<[array count];i++){NSLog(@"index %d has %@", i, [array objectAtIndex:i]);} 

-(unsigned)count;包括對象個數(shù)。-(id)objectAtIndex:(unsigned int)index;獲得特定索引處的對象。

失常處理:

萬一index大于數(shù)組對象個數(shù):Terminating app due to uncaught exception 'NSRangeException' reason:'...',有眾多捉拿失常并處理的重復(fù)。

CF:Core Foundatin框架利用,與Cocoa框架一樣,然而用C語言告終。CF中的對象和Cocoa對象直接是免費橋接的,能夠互換利用。

切分?jǐn)?shù)組:

Perl可能Python中適應(yīng)于將字符串切分成數(shù)組和將數(shù)組元素并合成字符串。NSArray也能夠!

  1. NSString *str = @"opp:abc:book:come";  
  2. NSString *chunks = [str componentsSeparatedByString:@":"];  
  3. str = [chunks componentsJoinedByString:@":)"]; 

這時候的str為"opp:)abc:)book:)come"

  1. NSMutalbeArray:  
  2. +(idarrayWithCapacity:(unsigned)numltems; //預(yù)分配一個大小,不會將對象預(yù)寫入數(shù)組,也不會局限數(shù)組大小。  
  3. -(void)addObject:(id)anObject; //在數(shù)組末路增加對象  
  4. -(void)removeObjectAtIndex:(unsigned)index; //剔除一個對象,重要索引從0開始,并且被剔除對象后面的數(shù)組元素前移來添補(bǔ)空缺。  
  5. NSEnumerator枚舉措施方便數(shù)組  
  6. -(NSEnumerator *)objectEnumerator;//向數(shù)組哀求枚舉器  
  7. -(id)nextObject; //向枚舉器哀求下一個對象,歸來nil表示哀求告終  
  8. NSEnumerator *enumerator;  
  9. id thingid;  
  10. enumerator = [array objectEnumerator];  
  11. while(thingid = [enumerator nextObject]){} 

迅速枚舉。Objective-C 2.0中有迅速枚舉措施。

  1. for(NSString *str in array) {NSLog(@"%@",str); } 62.syxinhao.com//循環(huán)經(jīng)驗 方便數(shù)組中每個元素

NSDictionary是在給定關(guān)鍵字(例如一個字符串)下存儲一個數(shù)值(對象),然后能夠穿越關(guān)鍵字來查找相應(yīng)數(shù)值。

  1. Tire *t1 = [Tire new];....Tire *t4 = [Tire new];  
  2. NSDictionary *tires = [NSDictionary dictionaryWithObjectsAndKeys:t1,@"f_l",t2,@"f_r",t3,@"b_l",t4,@"b_r",nil];  
  3. //接受對象和關(guān)鍵字 交替存儲。nil終止  
  4. Tire *tire = [tires objectForKey:@"l_r"];  
  5. //歸來一個id 這里是Tire對象,萬一未曾l_r關(guān)鍵字 歸來nil。 

NSMutableDictionary和NSMutableArray相仿壟斷。

不要容易想創(chuàng)立NSString,NSArray,NSDictionary的子類!許多類是以類簇措施告終,它們是一群隱藏在通用接口下的與告終相干的類。創(chuàng)立NSString對象時,切實上獲得的可能是NSLiteralString,NSCFString,NSSimpleCString對象。給類簇創(chuàng)立子類很繁瑣,然而能夠?qū)SString復(fù)合到我們自己的某個類可能利用種類vielai處理,而無須創(chuàng)立子類。

4.數(shù)值

NSArray,NSDictionary都不能存儲任何大約種類的數(shù)據(jù)。我們能夠用對象來封裝大約數(shù)值,然后將該對象納入NSArray中。

  1. NSNumber:  
  2. NSNumber *num;  
  3. num = [NSNumber numberWithInt/Char/Float/Bool:1];  
  4. [array addObject:num];  
  5. [dictionary setObject:num forKey :@"book"];  
  6. -(char)charValue; -(int)intValue;....-(NSString *) stringValue;用來解析NSNumber中封裝的數(shù)據(jù)。  
  7. NSValue: 

NSNumber是NSValue的子類。NSValue能夠包裝任何值。能夠用來包裝構(gòu)造。

  1. NSRect rect = NSMakeRect(1,1,20,20);  
  2. NSValue *value;  
  3. value = [NSValue valueWithBytes:&rect  
  4. objCType:@encode(NSRect)]; 

//(const void *)value想存儲的變量的地址。c中&。@encode編譯器能夠接受數(shù)據(jù)種類名目并生成輕便字符串。

  1. [array addObject:value]; 

提取:

  1. value=[array objectAtIndex:0];  
  2. [value getValue:&rect];//利用了get 

(void *)value指針?biāo)赶虻目臻g來存儲該措施生成的數(shù)據(jù)。

對于構(gòu)造:

  1. +(NSValue *)valueWithRect:(NSRect)rect; -(NSRect) rectValue;  
  2. NSNULL: 

只有一個措施 +(NSNull *)null;

用在NSArray可能NSDictionary中表示這里什么都未曾。因為nil被用了。

  1. [contact setObject:[NSNull null]  
  2. forKey:@"haha"];  
  3. id hahaid;  
  4. hahaid = [contact objectForKey:@"haha"];  
  5. if(hahaid == [NSNull null]) {} //[NSNull null] 

歸來的數(shù)值總是一樣的,因而能夠用==來值比擬。代碼審查—由同志們尋找代碼中的訛謬—所覺察的訛謬與在測驗中所覺察的訛謬不同。

小結(jié):Objective-C學(xué)習(xí)基礎(chǔ)筆記的內(nèi)容介紹完了,希望本文對你有所幫助!

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

2011-08-05 14:03:39

Objective-C 對象 模板

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2011-05-11 15:45:50

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

2011-08-15 16:09:44

Cocoa對象Objective-C

2011-07-27 16:36:03

iphone Objective- 靜態(tài)庫

2011-07-22 15:42:39

Objective-C UIView 內(nèi)存

2011-07-07 17:04:33

iPhone Action Objective-

2011-07-18 14:59:20

iPhone Objective-

2013-08-21 14:57:42

objective-c問題

2011-05-11 14:06:49

Objective-C

2011-08-04 11:04:14

Objective-C 面向?qū)ο? 繼承

2011-07-06 14:12:14

Objective-C

2010-11-04 16:32:00

Objective-C

2011-08-04 10:38:17

Objective-C 預(yù)處理程序

2011-07-25 10:03:06

Objective-C 委托

2011-07-25 14:27:10

Objective-C 協(xié)議 函數(shù)

2011-08-04 13:43:30

Objective-C 私有變量

2011-07-25 10:14:13

Objective-C Xcode

2011-07-25 10:30:41

Objective-C Xcode 重構(gòu)

2011-07-25 11:02:29

Objective-C Xcode 標(biāo)簽
點贊
收藏

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