1.框架是由許多類、方法、函數、文檔按照必定的邏輯組織起來的集合,以便使研發程序變的更容易ios
清除緩存,刪除這個文件夾下的全部文件/Users/fanyafang/Library/Developer/Xcode/DerivedData數組
顯示隱藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true緩存
隱藏隱藏文件:defaults write com.apple.finder AppleShowAllFiles -bool falseapp
2.NSURL與NSString框架
url統一資源定位符函數
//1.將字符串寫入文件 NSString *str11=@"ssad"; NSError *err; [str11 writeToFile:@"/Users/fanyafang/Desktop/str.txt" atomically:YES encoding:NSUTF8StringEncoding error:&err]; if(err!=nil){ NSLog(@"寫入失敗!%@",err); }else{ NSLog(@"寫入成功!"); } //2.讀取文件到字符串 NSString *str22=[NSString stringWithContentsOfFile:@"/Users/fanyafang/Desktop/str.txt" encoding:NSUTF8StringEncoding error:&err]; if(err!=nil){ NSLog(@"讀取失敗!%@",err); }else{ NSLog(@"讀取成功!"); NSLog(@"%@",str22); } //3.寫入url,本地路徑加file:// NSURL *url=[NSURL URLWithString:@"file:///Users/fanyafang/Desktop/str1.txt"]; if([str11 writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:&err]){ NSLog(@"寫入成功url"); } //4.讀取url NSString *str33=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@",str33);
3.NSStringatom
compare:字符串比較url
位枚舉,枚舉值是2的次方,不使用的時候賦0spa
[str1 compare:str2 options:(NSCaseInsensitiveSearch,NSNumericSearch)];code
NSString *str1=@"abcd"; NSString *str2=@"abc"; NSComparisonResult s=[str1 compare:str2 options:(NSCaseInsensitiveSearch,NSNumericSearch)]; switch (s) { case NSOrderedAscending: NSLog(@"升序!"); break; case NSOrderedSame: NSLog(@"同樣!"); break; case NSOrderedDescending: NSLog(@"降序!"); break; default: break; }
isEqualToString:字符串比較
if ([str1 isEqualToString:str2]) { NSLog(@"相等"); }else{ NSLog(@"不相等"); }
hasPrefix:是否包含前綴
hasSuffix:是否包含後綴
[str1 hasPrefix:@"sss"];//返回BOOL [str1 hasSuffix:@".jpg"];//返回BOOL
rangeOfString:字符串1中是否包含字符串2,返回結構體類型
NSMarkRange()能夠給NSRange類型的結構體變量賦值
NSStringFromRange()把range轉換正NSString
NSRange range=[str1 rangeOfString:str2]; if(range.location!=NSNotFound){ //沒有找到 }else{ //找到了 //range.location首次出現的位置 //range.length長度 }
substringFromIndex:從什麼位置開始截取字符串
substringToIndex:從開始位置到什麼位置截取
substringWithRange:截取一個範圍
NSString *str3=@"ssadsadsadsaqqee"; NSLog(@"%@",[str3 substringFromIndex:3]);//從什麼位置開始到結束 NSLog(@"%@",[str3 substringToIndex:3]);//從開始到什麼位置結束 NSRange r1={3,4}; NSLog(@"%@",[str3 substringWithRange:r1]);//截取一個範圍
stringByReplacingOccurrencesOfString:替換
NSString * str4=[str3 stringByReplacingOccurrencesOfString:@"a" withString:@"#"]; NSLog(@"%@",str4);
length獲取字符串的長度
characterAtIndex獲取某個位置的字符
NSUInteger u=str3.length; NSLog(@"%u",u); unichar ch= [str3 characterAtIndex:3]; NSLog(@"%c",ch);
intValue:字符串轉int
floatValue:字符串轉float
doubleValue:字符串轉double
NSString *str5=@"3"; NSLog(@"%d",[str5 intValue]); NSLog(@"%f",[str5 floatValue]); NSLog(@"%f",[str5 doubleValue]);
stringWithUTF8String用C的字符串建立OC的字符串
UTF8String:OC字符串轉成C的字符串
char *str6="aasdaf"; //用C語言的對象建立OC的字符串 NSString *str7= [NSString stringWithUTF8String:str6]; char *str8=[str7 UTF8String]; printf("%s",str8);
2.NSMutableString
NSMutableString *strring=[NSMutableString stringWithFormat:@"Jack"]; //NSMutableString *strring=[NSMutableString string]; [strring appendFormat:@"itcast"];//追加 NSLog(@"%@",strring);
NSMutableString和NSString的區別:
1)NSString是不可變的,裏面的文字內容是不能進行修改的
2)NSMutanleString是可變的,裏面的文字內容能夠隨便更改
3)NSMubleString繼承自NSStirng,能使用NSString的全部方法
NSMutableString經常使用方法
stringWithFormat:格式化添加字符串
deleteCharactersInRange:刪除字符串的一部分
insertString:在指定位置插入字符串
replaceCharactersInRange:替換字符串的一部分
NSMubleString的string屬性能夠把字符串覆蓋
給可變字符串賦值爲不可變字符串,報錯
NSMutableString *strring=[NSMutableString stringWithFormat:@"Jack"]; //NSMutableString *strring=[NSMutableString string]; [strring appendFormat:@"itcast"]; [strring appendString:@"ssss"]; NSLog(@"%@",strring); NSRange range1={2,3}; [strring deleteCharactersInRange:range1]; [strring insertString:@"fanyf" atIndex:8]; NSLog(@"%@",strring); [strring replaceCharactersInRange:range1 withString:@"rrr"]; NSLog(@"%@",strring);
3.NSArray只能存聽任意OC對象,而且是有序的
數組元素不能存nil,改爲[NSNull null],最後一個nil表示賦值結束,
//建立一個空數組 NSArray *arr=[NSArray array]; NSLog(@"%@",arr); //建立數組,只有一個元素 NSArray *arr2=[NSArray arrayWithObject:@"acc"]; NSLog(@"%@",arr2); //建立數組,有多個元素 NSArray *arr3=[NSArray arrayWithObjects:@"one",@"two",@"three",nil]; NSLog(@"%@",arr3); //調用對象方法,建立數組 NSArray *arr4=[[NSArray alloc] initWithObjects:@"one",@"two",@"three",nil]; NSLog(@"%@",arr4); //用一個數組能夠建立另外的一個數組 NSArray *arr5=[NSArray arrayWithArray:arr3]; NSLog(@"%@",arr5);
count獲取數組長度
ObjectAtIndex:獲取某個位置的元素
indexofObject:返回某個元素的下標
laseObject:
firstObject:
containObject:是否包含這個元素返回BOOL
NSLog(@"%ld",arr3.count);//獲得數組長度 NSLog(@"%@",[arr5 objectAtIndex:1]);//獲得位置是1的元素的值 NSUInteger loc= [arr5 indexOfObject:@"two"];//元素的位置 NSLog(@"%ld",loc); BOOL isContain=[arr5 containsObject:@"one"];//數組是否包含 NSLog(@"%@",isContain); NSArray *arr11=@[@"111",@"2",@11];//數組的簡化寫法 NSLog(@"%@",arr11[0]);//數組的簡化訪問
數組的遍歷(通常方法和快速枚舉法):
//數組的遍歷1 for (NSString *str in arr11) { NSLog(@"數組遍歷:%@",str); } //數組的遍歷2,用block遍歷 [arr5 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { //if(idx==2){ // *stop=YES; //}else{ NSLog(@"idx=%ld,obj=%@",idx,obj); //} }];
讀寫文件,xml格式或者plist格式
BOOL isWrite= [arr11 writeToFile:@"/Users/fanyafang/Desktop/arr.txt" atomically:YES]; if(isWrite){ NSLog(@"寫入成功!"); } NSArray *readArr= [NSArray arrayWithContentsOfFile:@"/Users/fanyafang/Desktop/arr.txt"]; NSLog(@"readArr=%@",readArr);
數組中的字符串用"-"鏈接起來
字符串分割成一個數組
//數組鏈接 NSString *str=[arr5 componentsJoinedByString:@"-"]; NSLog(@"%@",str); //字符串分隔 str=@"400-800-12580"; NSArray *arr6=[str componentsSeparatedByString:@"-"]; NSLog(@"%@",arr6);
4.NSMutableArray
NSMutableArray *marr=[NSMutableArray arrayWithObject:@"12"]; NSMutableArray *marr2=[NSMutableArray arrayWithObjects:@"1",@"2",@"3",nil]; NSMutableArray *marr3=[NSMutableArray arrayWithCapacity:5]; //添加元素 [marr2 addObject:@"fengjie"]; NSLog(@"%@",marr2); [marr2 insertObject:@"sdd" atIndex:2]; //刪除元素 NSLog(@"%@",marr2); [marr2 removeObject:@"sdd"]; NSLog(@"%@",marr2); [marr2 removeObjectAtIndex:2]; NSLog(@"%@",marr2); //刪除元素 [marr2 replaceObjectAtIndex:1 withObject:@"111"]; NSLog(@"%@",marr2); //是否包含元素 NSLog(@"%@",[marr2 containsObject:@"111"]); //交換元素 [marr2 exchangeObjectAtIndex:0 withObjectAtIndex:2]; NSLog(@"%@",marr2);
5.NSDictionary
enumerateKeysAndObjectsUsingBlock用代碼塊遍歷
簡寫形式:
6.NSMutableDictionary
7.NSFileManager
//NSFileManager用於判斷 NSString *path=@"/Users/fanyafang/Desktop/str.txt"; NSString *path2=@"/Users/fanyafang/Desktop"; NSFileManager *fm=[NSFileManager defaultManager]; //1)判斷文件是否存在 BOOL isyes=[fm fileExistsAtPath:path]; //2)判斷是不是目錄 if(isyes){ BOOL isDir; [fm fileExistsAtPath:path2 isDirectory:&isDir]; if(isDir){ NSLog(@"是一個目錄"); } } isyes=[fm isReadableFileAtPath:path];//3)是否可讀 isyes=[fm isWritableFileAtPath:path];//4)是否可寫 isyes=[fm isDeletableFileAtPath:path];//5)是否可刪除 //1)獲取文件信息 NSDictionary *dict=[fm attributesOfItemAtPath:path error:nil]; NSLog(@"%@",dict); NSLog(@"%@",[dict objectForKey:@"NSFileCreationDate"]); //2)獲取指定目錄下的文件及子目錄 NSArray * arr=[fm subpathsAtPath:path2];//遞歸方式 arr=[fm subpathsOfDirectoryAtPath:path2 error:nil];//不使用遞歸方式 //3)獲取知道目錄下得子目錄(不獲取後代路徑) arr=[fm contentsOfDirectoryAtPath:path2 error:nil]; NSLog(@"%@",arr); //1)建立路徑 NSString *dirPath=@"/Users/fanyafang/Desktop/aaa"; BOOL isYes=[fm createDirectoryAtPath:dirPath withIntermediateDirectories:YES attributes:nil error:nil]; //2)建立文件 NSString *str=@"每當我錯過一個女孩。。。。"; NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding]; isyes=[fm createFileAtPath:path contents:data attributes:nil]; //3)複製 NSString *targetPath=@"/Users/fanyafang/Desktop/aaa/str.txt"; [fm copyItemAtPath:path toPath:targetPath error:nil]; //4)移動文件 NSString *targetPath2=@"/Users/fanyafang/Desktop/aaa/bbb/str.txt"; [fm moveItemAtPath:path toPath:targetPath2 error:nil]; //5)刪除文件 [fm removeItemAtPath:targetPath error:nil];
8.ios沙盒(sandbox)機制及獲取沙盒路徑
文件系統
1)獲取沙盒跟目錄
NSHomeDirectory();
2)獲取doucuments目錄
NSSearchPathForDirectoriesInDomains();
9.常見結構體
//CGPoint和NSPoint CGPoint p; p.x=1; p.y=3; CGPoint pp={1,3}; NSPoint p1; p1.x=2; p1.y=3; NSPoint p2={2,3}; CGPoint p3=CGPointMake(1, 3); NSPoint p4=NSMakePoint(2, 2); //CGSize和NSSize CGSize s1={23,43}; CGSize s2; s2.width=12; s2.height=14; NSSize s3={23,43}; NSSize s4; s4.width=23; s4.height=33; CGSize s5=CGSizeMake(2, 3); NSSize s6=NSMakeSize(34, 45); //CGRect和NSRect CGRect rr={{1,2},{33,44}}; CGRect r1=CGRectMake(1, 3, 4, 6); NSRect r2=NSMakeRect(3, 2, 44, 66); NSLog(@"%@",NSStringFromRect(r2));
10.NSNumber
NSNumber *n=[NSNumber numberWithInt:10]; NSNumber *n2=[NSNumber numberWithFloat:10.1f]; NSNumber *n3=[NSNumber numberWithDouble:12.1]; NSArray *arr=[NSArray arrayWithObjects:n,n2,n3, nil]; NSLog(@"%@",arr); int a=[n intValue]; NSLog(@"%d",a); float f=[arr[1] floatValue]; //簡寫@18 @(變量名)
11.集合對象的內存管理
1)只要把對象放到數組中,對象的引用計數+1
2)數組在銷燬的適合,對對象發送一次release消息
12.copy
類必須遵照NSCopying協議,才能使用copy方法複製對象
使用copy產生的是不可變的副本,是淺複製,由於沒有產生新的對象
使用mutableCopy產生的是可變的副本,是深複製,分配一塊新的內存空間
@property中的copy關鍵字
適用於NSString/Block
13.爲自定義類實現copy方法
遵照NSCopying協議
實現默認的方法,返回新對象
自定義對象都是深拷貝
14.單例模式