Foundation框架

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.單例模式

相關文章
相關標籤/搜索