<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 概述 Mac OS X開發會使用 Cocoa框架, 它是一種支持應用程序提供豐富用戶體驗的框架,? 它實際上由: Foundation和Application Kit(AppKit)和?Core Data框架組成。? iOS開發, 會使用 Cocoa Touch框架,? 它實際上由: Foundation、Core Data和UIKit框架組成。? AppKit和UIKit框架都是與窗口 、 按鈕、 列表等相關的類。 Foundation是Mac OS X和iOS應用程序開發的基礎框架,? 它包括了一些基本的類, 如: 數字、 字符串、 數組、 字典等。 快速概要: 光標放在需要搜索的類、方法或變量上,按住Option鍵,同時單擊鼠標,你會看到所選擇內容的快速概要。 在面板的右上角注意到有兩個圖標:第一個是一本書,第二個是一個字符h。 單擊那個書的圖標,Xcode會查找選擇的類、協議、定義或者方法的相關文檔。 單擊字符h的圖標,將會顯示包含選擇項目定義的頭文件。 MAC OS X在線參考庫,地址是[點擊打開鏈接](http://developer.apple.com/library/mac/navigation/index.html)。 要使用Foundation框架中的類,要先引用頭文件: `#import ` 實際上,因為Foundation.h文件導入Foundation所有的頭文件,所以不必擔心是否導入正確的頭文件。 但使用這條語句會明顯增加程序的編譯時間。 所以,一般import用到的頭文件。不要用太大的import。 基本數據類型: int、 char、 float和double都不是類,? 不具有方法、 成員變量和屬性, 以及面向對象的特征。? 為了實現“一切都是對象” 的承諾,? 因此在Foundation框架中使用NSNumber類來封裝這些數字類型。? 這樣數字就具有了面向對象的基本特征了。 也就是說:如果需要存儲基本數據類型(包括char數據類型),可以使用NSNumber類, 它會依據這些數據的類型創建對象。 對于每種基本數據類型,類方法都能為它創建一個NSNumber對象,并設置為指定的值。 NSNumber類構造函數 采用 + numberWithInt: 等“+ number” 開頭的類級構造方法, 可以從基本數據類型構建NSNumber對象。? 而使用 –intValue方法可以從NSNumber對象獲得基本數據類型。? 這些方法以numberWith開頭,緊接著數據的類型,如:numberWithLong: ~~~ 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作為格式化字符串。 比較兩個NSNumber對象大小 可以轉化成為基本數據類型比較, 當然可以使用 NSNumber的方法比較,? 這就是對象的優勢了, 與比較相關方法有: isEqualToNumber: 和compare: 。? isEqualToNumber: 只是比較是否相對, compare: 可以比較大小。 ~~~ if?([intNumber?isEqualToNumber:?floatNumber]?==?YES)?{?? NSLog(@"相等");?? }?else?{?? NSLog(@"不相等");?? }?? if?([intNumber?compare:?myNumber]?==?? NSOrderedAscending)?{?? NSLog(@"第一個數小于第二個數");?? }?? ~~~ NSOrderedAscending是枚舉類型NSComparisonResult的其中成員, 代表第一個數小于第二個數,? 此外還有NSOrderedSame成員代表第一個數等于第二個數,? NSOrderedDescending成員代表第一個數大于第二個數。 ### 字符串類 在Foundation框架中字符串類有兩種:? NSString不可變字符串類和NSMutableString可變字符串類。? NSString是定義固定大小的字符串,? NSMutableString是可對字符串做追加、刪除、 修改、 插入和拼接等操作而不會產生新的對象。 ### NSString類 NSSTring的類,用于處理字符串對象。然而C樣式的字符串由char字符組成,NSString對象由unichar字符組成。 要使用Objective-C語言創建一個常量字符串對象,需要在字符串開頭放置一個@字符。 創建字符串對象時,會創建一個內容不可更改的對象,這稱為不可變對象。 需要制定一個范圍確定子字符串,使用特殊的數據類型NSRange類創建對象。 實際上,它是結構的typedef定義,包含location和length兩個成員。 如果沒有找到這個字符串,則返回范圍的location成員被設置為NSNotFound。 stringWithString:類級構造方法創建NSString對象,NSString構造方法還有很多; length,返回Unicode字符的長度; stringByAppendingString:實現了字符串的拼接,這個方法會產生下一新的對象; isEqualToString:比較兩個字符串是否相等; compare: 比較兩個字符串大小; substringToIndex:可以獲得字符串的前x個字符串; substringFromIndex:可以截取x索引位置到尾部字符串; rangeOfString:字符串查找; 下面來看一段示例代碼: ~~~ #import??? ?? int?main?(int?argc,?const?charchar?*?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?);?? ????}?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;?? ?????? }?? ~~~ 我們解釋一下主要代碼: str2 = [str1?stringByAppendingString: str2] 語句是將兩個字符串對象拼接在一起,? 由于NSString是不可變字符串類, 這會產生一個新的對象。? subRange = [str2 rangeOfString: @"34"] 中的rangeOfString: 方法會返回一個NSRange結構體,? 它的location成員是找到的字符串的索引 , 它的length成員是找到的字符串的長度。 NSMutableString 類 NSMutableString類可以用來創建可以更改字符的字符串對象。 注意,如果替換字符串中還包括搜索字符串(如:使用字符串“ax”替換字符串“a”), 那么將會陷入無限循環。 其實,這個是和它的實現原理有關系,一般這種替換使用的方法使用了遞歸調用。 stringWithString: 類級構造方法創建NSString對象,NSMutableString構造方法還有很多;? insertString: 插入字符串, 不會創建新的對象;? appendString: 追加字符串, 不會創建新的對象;? deleteCharactersInRange: 在一個范圍內刪除字符串, 不會創建新的對象;? replaceCharactersInRange: withString: 替換字符串, 不會創建新的對象; 再看斷示例代碼: ~~~ #import??? ?? int?main?(int?argc,?const?charchar?*?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;?? }?? ~~~ 我們解釋一下主要代碼: 語句[mstr?deleteCharactersInRange:NSMakeRange(16, 13)] 是刪除指定范圍的字符串,? 函數NSMakeRange 是創建NSRange結構體, 其中第一個參數是位置, 第二個參數是長度,? 語句[mstr?replaceCharactersInRange: NSMakeRange(8, 8) withString:@“a mutable string ”] 替換指定訪問的字符串。? [mstr?deleteCharactersInRange: substr] 語句是刪除指定范圍的字符串。 數組類 在Foundation框架中數組被封裝成為類, 數組對象:是Foundation數組是有序的對象集合。 數組有兩種: NSArray不可變數組類和NSMutableArray可變數組類。 注意,需要標記參數數組的結束,將這個數組的最后一個值定為nil,它實際上并不會存儲在數組中。 數組中的元素是由它們的索引數確定的。與NSString對象類似,索引從0開始。 可以通過NSLog格式化字符串%@顯示整個數組。 NSArray類 NSArray有很多方法,?下面是總結常用的方法:? count:?返回當前數組的長度;? objectAtIndex:?按照索引返回數組中的元素;? containsObject: 是否包含某一元素;? arrayWithObjects: 類級構造方法;? initWithObjects: 實例構造方法; NSArray的實例代碼如下: ~~~ #import??? ?? int?main?(int?argc,?const?charchar?*?argv[])?{?? ????NSAutoreleasePool?*?pool?=?[[NSAutoreleasePool?alloc]?init];?? ?? ????NSArray?*weeksNames?=?[NSArray?arrayWithObjects:??? ???????????????????????????@"星期一",@"星期二",@"星期三",@"星期四"?? ???????????????????????????,@"星期五",@"星期六",@"星期日",nil];?? ????NSLog(@"星期名字");?? ????NSLog(@"====???====");?? ????int?i;?? ????for?(i=0;?i??count];i++)?{?? ????????NSLog(@"%2i?????%@?",?i+1,?[weeksNames?objectAtIndex:?i]);???????? ????}?? ?????? ?????? ????[pool?drain];?? ????return?0;?? }?? ~~~ arrayWithObjects可以用來創建使用一列對象作為元素的數組。? 在這種情況下,?按順序列出對象并使用逗號隔開。? 使用這個方法必須在列表的最后指定一個結束標志nil?。? count可以獲得數組的長度。?數組的下標是從0開始的。 NSMutableArray類 NSMutableArray是NSArray的子類,?NSMutableArray有很多方法,? 下面是總結常用的方法:? addObject:?在數組的尾部追加一個元素;? insertObject:?在數組的添加一個元素;? atIndex: 按照索引插入一個元素;? removeObjectAtIndex: 移除特定索引的元素;? removeObject: 移除特定元素;? initWithCapacity: 實例構造方法; ~~~ #import??? ?? int?main?(int?argc,?const?charchar?*?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??count];i++)??? ????????NSLog(@"%2i?????%@?",?i+1,?[weeksNames?objectAtIndex:?i]);??? ?????? ????[weeksNames?release];?? ?? ????return?0;?? ?????? }?? ~~~ [[NSMutableArray alloc] initWithCapacity: 3]?,?可以初始化可變數組并分配3個初始單元,? 如果超過了容量會自動追加的。? addObject方法可以向數組中添加元素。 NSValue: 數組這樣的Foundation集合只能存儲對象,不能存儲像int這樣的基本數據類型。 NSValue類正好可以將結構轉化為對象,并且把它存儲在集合中。 這種將結構化轉為對象的方式,簡稱為包裝(wrapping), 逆向的處理是從對象中解出基本類型,簡稱展開(unwrapping)。 字典類 字典集合, 它是由“鍵-值”對構成的集合。? 鍵集合不能重復,也就是說字典中的鍵必須是單值的; 值集合沒有特殊要求。? 鍵和值集合中的元素通常是字符串,但也可以是任何對象, 但是不能是nil。? 詞典可以使固定的,也可以是可變的。 可變詞典中的記錄可以動態添加和刪除。 和數組對象不一樣,詞典對象是無序的。 這個字典類與java中的HashMap很相似,也是key-value的格式。 舉例如下: 字典類數據結構模型,? 如圖所示的“學生與學號”集合; ![](https://box.kancloud.cn/2015-12-31_5684a3f0d7c38.jpg) 與數組類一樣, 字典類也分為NSDictionary不可變字典和NSMutableDictionary可變字典。? NSDictionary類 NSDictionary有很多方法,?下面是總結常用的方法:? count:?字典集合的長度;? objectForKey:?通過鍵獲得值對象;? allKeys: 返回所有鍵集合;? arrayWithObjects: 類級構造方法;? initWithObjects: 實例構造方法;? initWithObjects:forKeys: 實例構造方法;? initWithObjectsAndKeys: 實例構造方法;? initWithContentsOfFile: 從屬性文件中創建對象; ~~~ #import??? ?? int?main?(int?argc,?const?charchar?*?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;?? }?? ~~~ NSArray * keys = [@“one two three four five”componentsSeparatedByString:@“ ”] 語句是將一個字符 串按照空格分割返回NSArray對象, 同理獲得values對象, 然后使用 NSDictionary * dict = [[NSDictionary alloc]?initWithObjects:values forKeys:keys] 語句 把keys和values放入到不可變字典對象dict中。 NSMutableDictionary類 NSMutableDictionary 是NSDictionary的子類, NSMutableDictionary有很多方法, 下面是總結常用的方法:? setObject: forKey: 通過鍵和值;? removeObjectForKey: 按照鍵移除值;? writeToFile: atomically: 把對象寫入到文件中; ~~~ #import??? ?? int?main?(int?argc,?const?charchar?*?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;?? }?? ~~~ NSMutableDictionary *mutable = [[NSMutableDictionary?alloc] init] 是采用默認的init構造方法創建 NSMutableDictionary對象mutable。? [mutable setObject:@"Tom" forKey: @"tom@jones.com"] 語句是按照鍵tom@jones.com添加Tom對象。 集合對象: set是一組單值對象集合,它可以是變的或不可以變的。 操作包括:搜索、添加、刪除集合中的成員(僅用于可變集合),比較兩個集合,計算兩個集合的交集和并集等。 這些集合對象包括:NSSet、NSMutableSet、NSIndexSet和NSCountedSet等。 注意,NSIndexSet沒有可變版本。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看