使用XCode的提示功能,只需要記住類的名字及常用的函數就好了,其他的函數可以根據提示來查看,按ESC鍵可以查看該類的函數
Foundtion架構
Cocoa程式的編寫主要要用到兩個架構,Foundation和ApplicationKit(UIKit),其中Foundation架構主要定義了一些基礎類,而ApplicationKit主要定義了一些用於Mac開發的幾面基礎類,而IOS的介面開發主要是用UIKit。Foundation架構中的所有類都繼承自NSObject,這就是所謂的上帝吧。Foundation主要提供了與圖形化使用者介面沒有直接關係的功能的一些類,比如:字串、數值、容器集合等等相關的類。
1、有關數字對象的處理
把數字封裝成數字對象
int age = 24; BOOL isMarry = NO; float pi = 3.14f; //使用類方法,其他的基礎資料型別 (Elementary Data Type)和如下兩種方式相同 NSNumber *myAge = [NSNumber numberWithInt:age]; NSNumber *aboutMarry = [NSNumber numberWithBool:isMarry]; //使用初始化方法 NSNumber *aboutPi = [[NSNumber alloc]initWithFloat:pi];
把數字對象再轉換成基礎資料型別 (Elementary Data Type)
age = [myAge intValue]; isMarry = [aboutMarry boolValue]; pi = [aboutPi floatValue];
2、字串的常見應用
由於oc是基於c的,為了區別起見,oc中的字串必須以@開頭,@後引號內的類容為字串本身內容
NSString對象一旦建立就不能再修改,如果想建立一個可以修改的字串對象,則使用NSMutableString,這裡的NSS他ring好比java中的String類,而NSMutableString類好比java中StringBuffer
//建立一個字串 //方法一 NSString *name = @"Jim Green"; //方法二 //建立一個Null 字元串 NSString *name1 = [[NSString alloc]init];//執行個體方法 //建立非Null 字元串 NSString *name3 = [[NSString alloc]initWithString:@"Jim Green"]; //有關建立格式化符字串 NSString *myself = [[NSString alloc]initWithFormat:@"我是%@,今年%d歲,知道PI的值是%f",name3,age,pi];
有關字串的比較:
//以下列印結果為相等 NSString *str1 = @"niao"; NSString *str2 = @"niao"; if (str1 == str2) { NSLog(@"相等"); }else NSLog(@"不相等"); if ([str1 isEqualToString: str2]) { NSLog(@"相等"); }else NSLog(@"不相等"); //此處的列印結果也相等(在常量區建立) NSString *str3 = [[NSString alloc]initWithString:@"ge"]; NSString *str4 = [[NSString alloc]initWithString:@"ge"]; if (str3 == str4) { NSLog(@"相等"); }else NSLog(@"不相等"); //此處列印也相等 if ([str3 isEqualToString: str4]) { NSLog(@"相等"); }else NSLog(@"不相等"); //********************************************************分界線
//在堆區建立 NSString *str5 = [NSString stringWithFormat:@"ni%d",5]; NSString *str6 = [NSString stringWithFormat:@"ni%d",5]; //此處列印不相等 if (str5 == str6) { NSLog(@"5相等6"); }else NSLog(@"5不相等6"); //此處列印也相等 if ([str5 isEqualToString: str6]) { NSLog(@"5相等6"); }else NSLog(@"5不相等6");
分界線以上的無論是==還是isEqualToString都是相等,分界線以下的==列印不相等,isEqualToString列印的是相等,這裡用isEqualToString比較相等很容易理解,關於用等號比較
那是因為用==比較的是對象指標的地址,而不是對象本身
而分界線以上的對象都是在敞亮區建立的,所以用==比較是相等的
而分解先以下的是在堆區建立的,所以用==比較是不相等的
str5與str6是在堆區建立了兩個對象,所以對象的地址是不同的所以用==比較不同,而對象的內容是相同的,所以isEqualToString比較相同。
比較字串的大小
NSString *str7 = @"a"; NSString *str8 = @"b"; NSString * str9 = @"A"; NSLog(@"比較結果為:%@",[str7 compare:str8]?@"YES":@"NO");//比較結果為:YES //忽略大小寫 NSLog(@"忽略大小寫1,%ld",[str7 caseInsensitiveCompare:str8]);//忽略大小寫1,-1 NSLog(@"忽略大小寫2,%ld",[str9 caseInsensitiveCompare:str7]);//忽略大小寫2,0