1.框架是由許多類、方法、函數、文檔按照一定的邏輯組織起來的集合,以便使研發程序變的更容易
清除緩存,刪除這個文件夾下的所有文件/Users/fanyafang/Library/Developer/Xcode/DerivedData
顯示隱藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true
隱藏隱藏文件:defaults write com.apple.finder AppleShowAllFiles -bool false
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.讀取urlNSString *str33=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];NSLog(@"%@",str33);
3.NSString
compare:字符串比較
位枚舉,枚舉值是2的次方,不使用的時候賦0
[str1 compare:str2 options:(NSCaseInsensitiveSearch,NSNumericSearch)];
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]);//數組的簡化訪問
數組的遍歷(一般方法和快速枚舉法):
//數組的遍歷1for (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和NSSizeCGSize 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和NSRectCGRect 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.單例模式
?