zoukankan      html  css  js  c++  java
  • Foundation框架

    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.读取url
            NSString *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]);//数组的简化访问    

    数组的遍历(一般方法和快速枚举法):

            //数组的遍历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.单例模式

  • 相关阅读:
    关于jstl.jar引用问题及解决方法
    React 解析/ 第二节 使用 Reac
    NOde.js的安装和简介
    JACOB调用控件函数
    Linux 常用命令
    webService接口发布失败问题
    CommonsMultipartFile---用Spring实现文件上传
    验证签名(章)是否有效的方法
    新起点,新征程
    使用C#正则表达式获取必应每日图片地址
  • 原文地址:https://www.cnblogs.com/fanglove/p/4946336.html
Copyright © 2011-2022 走看看