您好,登錄后才能下訂單哦!
郝萌主傾心貢獻,尊重作者的勞動成果,請勿轉載。
如果文章對您有所幫助,歡迎給作者捐贈,支持郝萌主,捐贈數額隨意,重在心意^_^
我要捐贈: 點擊捐贈
Cocos2d-X×××:點我傳送
快速概要:
光標放在需要搜索的類、方法或變量上,按住Option鍵,同時單擊鼠標,你會看到所選擇內容的快速概要。
在面板的右上角注意到有兩個圖標:第一個是一本書,第二個是一個字符h。
單擊那個書的圖標,Xcode會查找選擇的類、協議、定義或者方法的相關文檔。
單擊字符h的圖標,將會顯示包含選擇項目定義的頭文件。
MAC OS X在線參考庫,地址是點擊打開鏈接。
#import <Foundation/Foundation.h>
實際上,因為Foundation.h文件導入Foundation所有的頭文件,所以不必擔心是否導入正確的頭文件。
但使用這條語句會明顯增加程序的編譯時間。
所以,一般import用到的頭文件。不要用太大的import。
基本數據類型:
int、 char、 float和double都不是類,
不具有方法、 成員變量和屬性, 以及面向對象的特征。
為了實現“一切都是對象” 的承諾,
因此在Foundation框架中使用NSNumber類來封裝這些數字類型。
這樣數字就具有了面向對象的基本特征了。
也就是說:如果需要存儲基本數據類型(包括char數據類型),可以使用NSNumber類,
它會依據這些數據的類型創建對象。
對于每種基本數據類型,類方法都能為它創建一個NSNumber對象,并設置為指定的值。
NSNumber *intNumber= [NSNumber numberWithInteger:80]; NSNumber *floatNumber = [NSNumber numberWithFloat: 80.00]; int myint = [intNumber intValue]; float myfloat = [floatNumber floatValue];
注意,方法numberWithInt:和numberWithInteger:使用有些差別,遵循以下一些規則:
1)如果使用numberWithInt:方法創建一個整型數,需要使用intValue獲取它的值,使用%i作為格式化字符串顯示它的值。
2)如果使用numberWithInteger:方法創建一個整型數,需要使用integerValue獲取它的值,也可以轉換成long顯示或使用stringWithFormat:將它格式化為字符串。使用%li作為格式化字符串。
if ([intNumber isEqualToNumber: floatNumber] == YES) { NSLog(@"相等"); } else { NSLog(@"不相等"); } if ([intNumber compare: myNumber] == NSOrderedAscending) { NSLog(@"第一個數小于第二個數"); }NSOrderedAscending是枚舉類型NSComparisonResult的其中成員, 代表第一個數小于第二個數,
NSSTring的類,用于處理字符串對象。然而C樣式的字符串由char字符組成,NSString對象由unichar字符組成。
要使用Objective-C語言創建一個常量字符串對象,需要在字符串開頭放置一個@字符。
創建字符串對象時,會創建一個內容不可更改的對象,這稱為不可變對象。
需要制定一個范圍確定子字符串,使用特殊的數據類型NSRange類創建對象。
實際上,它是結構的typedef定義,包含location和length兩個成員。
如果沒有找到這個字符串,則返回范圍的location成員被設置為NSNotFound。
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSString *str1 = @"aBcDeFgHiJk"; NSString *str2 = @"12345"; NSString *res; NSComparisonResult compareResult; NSRange subRange; //字符個數 NSLog(@"字符串str1長度: %i",[str1 length]); //拷貝字符串到res res = [NSString stringWithString: str1]; NSLog(@"拷貝: %@", res); //拷貝字符串到str1尾部 str2 = [str1 stringByAppendingString: str2]; NSLog(@"連接字符串: %@", str2); //測試字符串相等 if ([str1 isEqualToString: res] == YES) { NSLog(@"str1 == res"); } else { NSLog(@"str1 != res"); } //測試字符串 < > == compareResult = [str1 compare: str2]; if (compareResult == NSOrderedAscending) { NSLog(@ "str1 < str2"); } else if (compareResult == NSOrderedSame) { NSLog(@ "str1 == str2"); } else { NSLog(@ "str1 > str2"); } res = [str1 uppercaseString]; NSLog(@"大寫字符串:%@", res); res = [str1 lowercaseString]; NSLog(@"小寫字符串:%@", res); NSLog(@"原始字符串: %@", str1); //獲得前三個數 res = [str1 substringToIndex: 3]; NSLog(@"字符串str1的前三個字符: %@",res); res = [str1 substringFromIndex: 4]; NSLog(@"截取字符串,從第索引4到尾部: %@",res); res = [[str1 substringFromIndex: 3] substringToIndex: 2]; NSLog(@"截取字符串,從第索引3到5: %@",res); //字符串查找 subRange = [str2 rangeOfString: @"34"]; if (subRange.location == NSNotFound) { NSLog(@"字符串沒有找到"); } else { NSLog (@"找到的字符串索引 %i 長度是 %i", subRange.location, subRange.length); } [pool drain]; return 0; }
NSMutableString類可以用來創建可以更改字符的字符串對象。
注意,如果替換字符串中還包括搜索字符串(如:使用字符串“ax”替換字符串“a”),
那么將會陷入無限循環。
其實,這個是和它的實現原理有關系,一般這種替換使用的方法使用了遞歸調用。
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSString *str1 = @"Objective C"; NSString *search,*replace; NSMutableString *mstr; NSRange substr; //從不可變的字符創建可變字符串對象 mstr = [NSMutableString stringWithString: str1]; NSLog(@" %@", mstr); //插入字符串 [mstr insertString: @ " Java" atIndex: 9]; NSLog(@" %@", mstr); //具有連接效果的插入字符串 [mstr insertString: @ " and C++"atIndex: [mstr length]]; NSLog(@" %@", mstr); //字符串連接方法 [mstr appendString: @ " and C"]; NSLog(@" %@", mstr); //使用NSRange刪除字符串 [mstr deleteCharactersInRange:NSMakeRange(16, 13)]; NSLog(@" %@", mstr); //查找字符串位置 substr = [mstr rangeOfString: @ "string B and"]; if (substr.location != NSNotFound) { [mstr deleteCharactersInRange: substr]; NSLog(@" %@", mstr); } //直接設置可變字符串 [mstr setString: @ "This is string A "]; NSLog(@" %@", mstr); [mstr replaceCharactersInRange: NSMakeRange(8, 8) withString: @ "a mutable string "]; NSLog(@" %@", mstr); //查找和替換 search = @"This is "; replace = @"An example of "; substr = [mstr rangeOfString:search]; if (substr.location != NSNotFound) { [mstr replaceCharactersInRange:substr withString: replace]; NSLog(@" %@", mstr); } //查找和替換所有的情況 search = @"a"; replace = @"X"; substr = [mstr rangeOfString: search]; while (substr.location != NSNotFound) { [mstr replaceCharactersInRange:substr withString: replace]; substr = [mstr rangeOfString: search]; } NSLog(@" %@", mstr); [pool drain]; return 0; }
數組對象:是Foundation數組是有序的對象集合。
數組有兩種:
NSArray不可變數組類和NSMutableArray可變數組類。
注意,需要標記參數數組的結束,將這個數組的最后一個值定為nil,它實際上并不會存儲在數組中。
數組中的元素是由它們的索引數確定的。與NSString對象類似,索引從0開始。
可以通過NSLog格式化字符串%@顯示整個數組。
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSArray *weeksNames = [NSArray arrayWithObjects: @"星期一",@"星期二",@"星期三",@"星期四" ,@"星期五",@"星期六",@"星期日",nil]; NSLog(@"星期名字"); NSLog(@"==== ===="); int i; for (i=0; i < [weeksNames count];i++) { NSLog(@"%2i %@ ", i+1, [weeksNames objectAtIndex: i]); } [pool drain]; return 0; }
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSMutableArray *weeksNames = [[NSMutableArray alloc] initWithCapacity: 3]; [weeksNames addObject: @"星期一"]; [weeksNames addObject: @"星期二"]; [weeksNames addObject: @"星期三"]; [weeksNames addObject: @"星期四"]; [weeksNames addObject: @"星期五"]; [weeksNames addObject: @"星期六"]; [weeksNames addObject: @"星期日"]; NSLog(@"星期名字"); NSLog(@"==== ===="); int i; for (i=0; i < [weeksNames count];i++) NSLog(@"%2i %@ ", i+1, [weeksNames objectAtIndex: i]); [weeksNames release]; return 0; }
NSValue:
數組這樣的Foundation集合只能存儲對象,不能存儲像int這樣的基本數據類型。
NSValue類正好可以將結構轉化為對象,并且把它存儲在集合中。
這種將結構化轉為對象的方式,簡稱為包裝(wrapping),
逆向的處理是從對象中解出基本類型,簡稱展開(unwrapping)。
詞典可以使固定的,也可以是可變的。
可變詞典中的記錄可以動態添加和刪除。
和數組對象不一樣,詞典對象是無序的。
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSArray * keys = [@"one two three four five" componentsSeparatedByString:@" "]; NSArray * values = [@"alpha bravo charlie delta echo" componentsSeparatedByString:@" "]; NSDictionary * dict = [[NSDictionary alloc] initWithObjects:values forKeys:keys]; NSLog(@"%@", [dict description]); [dict release]; [pool drain]; return 0; }
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init]; // add objects [mutable setObject: @"Tom" forKey: @"tom@jones.com"]; [mutable setObject: @"Bob" forKey: @"bob@dole.com" ]; NSLog(@"%@", [mutable description]); [mutable release]; [pool drain]; return 0; }
集合對象:
set是一組單值對象集合,它可以是變的或不可以變的。
操作包括:搜索、添加、刪除集合中的成員(僅用于可變集合),比較兩個集合,計算兩個集合的交集和并集等。
這些集合對象包括:NSSet、NSMutableSet、NSIndexSet和NSCountedSet等。
注意,NSIndexSet沒有可變版本。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。