Objective-C 语法
吧Category使用場(chǎng)景:
-類(lèi)包含了很多個(gè)方法的實(shí)現(xiàn),而這些方法需要不同的團(tuán)隊(duì)成員來(lái)實(shí)現(xiàn)。
-當(dāng)你在使用基礎(chǔ)類(lèi)庫(kù)中的類(lèi)時(shí),不想集成這些類(lèi),只想添加一些方法時(shí)。
-Category能訪問(wèn)原始類(lèi)的實(shí)例變量,但是不能添加實(shí)例變量,如果想添加實(shí)例變量,那么就要通過(guò)創(chuàng)建繼承子類(lèi)來(lái)實(shí)現(xiàn)。
-Category實(shí)現(xiàn)文件中的實(shí)例方法,只要你不去調(diào)用它,它就不需要實(shí)現(xiàn)所有聲明中的所有方法。
block :
代碼塊存儲(chǔ)的數(shù)據(jù)是一個(gè)函數(shù)體 ,"^"脫字符,是代碼塊的語(yǔ)法標(biāo)記,
代碼塊中使用局部變量,必須要在局部變量中添加關(guān)鍵字_block;
KVO:基于鍵值的觀察者,主要用于視圖交互方面,比如界面的某些數(shù)據(jù)發(fā)生變化了,界面也要跟著變化,KVO實(shí)現(xiàn)兩個(gè)對(duì)象的直接同步(model,view)。只有通過(guò)鍵值編碼改變的值(KVO),才會(huì)調(diào)用觀察者注冊(cè)的方法。
NSDictionary:不可變的詞典
[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用鍵值對(duì)直接創(chuàng)建詞典對(duì)象,結(jié)尾必需使用nil標(biāo)志結(jié)束。
example: NSMutableDictionary?*dictionary?=?[NSMutableDictionary?dictionaryWithObjectsAndKeys:@"",@"",nil];?
[dictionary count]: 得到詞典的鍵值對(duì)數(shù)量。
[dictionary keyEnumerator]: 將詞典的所有key儲(chǔ)存在NSEnumerator中.
example:
NSEnumerator?*enumeratorKey?=?[dictionary?keyEnumerator];
for?(NSObject?*object?in?enumeratorObject)?{ ?
NSLog(@"value:%@",?object); ?
}
[dictionary objectEnumerator]: 將詞典的所有value儲(chǔ)存在NSEnumerator中
[dictionary objectForKey:key]: 通過(guò)傳入key對(duì)象可以拿到當(dāng)前key對(duì)應(yīng)儲(chǔ)存的值
NSMutableDictionary:可變?cè)~典。
NSMutableDictionary 是NSDictionay的子類(lèi),所以繼承了NSDictionay的方法。
[dictionary setObject: forKey:] :向可變的詞典動(dòng)態(tài)的添加數(shù)據(jù) 。
[dictionary removeAllObjects..] : 刪除掉詞典中的所有數(shù)據(jù)。
[dictionary removeObjectForKey..] :刪除掉詞典中指定key的數(shù)據(jù)。
NSArray:不可變的數(shù)組
[array count] : 數(shù)組的長(zhǎng)度
[array objectAtIndex 0]: 傳入數(shù)組腳標(biāo)的id 得到數(shù)據(jù)對(duì)象。
NSArray?*array?=?[NSArray?arrayWithObjects:@"",@"",nil]; 創(chuàng)建數(shù)組對(duì)象并初始化賦值。
NSMutaleArray:可變的對(duì)象數(shù)組
[NSMutableArray arrayWithCapacity:3] :初始化可變數(shù)組對(duì)象的長(zhǎng)度。
[array addObject:] : 向可變數(shù)組尾部添加數(shù)據(jù)對(duì)象。
[array addObjectsFromArray:] :向可變數(shù)組尾部添加一個(gè)數(shù)組對(duì)象。
?[muArray?insertObject:@""?atIndex:]; 向可變數(shù)組的指定位置添加對(duì)象。
? ?for?(NSObject?*?object?in?muArray)?{?
? ?NSLog(@"數(shù)組對(duì)象:%@",?object);?
}
NSRange range = NSMakeRange(0,6); 設(shè)置一個(gè)范圍為 0 到 6 之間。
[array removeObject:obj inRange:range] : 設(shè)置在一個(gè)范圍內(nèi)刪除數(shù)據(jù),如果這個(gè)范圍內(nèi)沒(méi)有刪除的這個(gè)對(duì)象則不會(huì)刪除任何東西。例子中因?yàn)閛bj對(duì)象在 數(shù)組 0 到 6的范圍內(nèi),所以obj就被刪除掉了。
[muArray?replaceObjectAtIndex: withObject:@""]; 替換某索引值對(duì)應(yīng)的對(duì)象。
isKindeOfClass,isMemberOfClass,id 動(dòng)態(tài)數(shù)據(jù)類(lèi)型:
對(duì)象在運(yùn)行時(shí)獲取其類(lèi)型的能力,成為內(nèi)省,內(nèi)省有很多種方法實(shí)現(xiàn):
判斷對(duì)象類(lèi)型:
-(BOOL) isKindOfClass: classObj判斷是否是這個(gè)類(lèi)或者這個(gè)類(lèi)的子類(lèi)的實(shí)例。
-(BOOL) isMemberOfClass: classObj 判斷是否是這個(gè)類(lèi)的實(shí)例,和父類(lèi)沒(méi)有關(guān)系。
id類(lèi)型可以指向任何類(lèi)的實(shí)例,不需要強(qiáng)轉(zhuǎn)。 example: TestCourse *course =?[[TestCourse alloc]?init];? id t = course; NSString:字符串比較方法 isEqualTostring [string1?compare:string2];? NSArray?*array?=?[nstring?componentsSeparatedByString:@","]; 按照指定的字符分割字符串。 使用標(biāo)準(zhǔn)的c創(chuàng)建字符串 char?*Cstring?=?"字符串"; ? NSString * string = [[NSString?alloc]?initWithUTF8String:Cstring];?[string1?hasPrefix:@"aaa"]匹配以“aaa”開(kāi)頭的字符串。
[string2?hasSuffix:@"bbb"]匹配以“bbb”結(jié)尾的字符串。
[string?stringByReplacingCharactersInRange:rang?withString:@"大產(chǎn)"];將搜索出來(lái)的字符串替換成指定字符串。
[string?stringByReplacingOccurrencesOfString?:@"?"?withString:@"*"]; ?將所有為“ ”的字符串全部替換為“*”
NSInteger?integerNumber?=?11; ?
NSString?*?string?=?[NSString?stringWithFormat:@"%d",integerNumber];將NSInteger轉(zhuǎn)換成NSString。
NSInteger?integer?=?[string?intValue]; ?將NSString轉(zhuǎn)化成NSInteger.
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/yanliang/archive/2013/03/10/2952951.html
總結(jié)
以上是生活随笔為你收集整理的Objective-C 语法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android学习第三天--事件监听器
- 下一篇: 快速排序——算法系列