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.读取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.单例模式

 

转载于:https://www.cnblogs.com/fanglove/p/4946336.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转换php script类型,javascript如何实现值的类型转换

本篇文章给大家介绍使用javascript进行值的类型转换的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。JavaScript是松散类型的语言,大多数情况下,运算符和函数会自动将值转换为正确的类型(隐式转…

iOS屏幕适配方案-Auto Layout

市场上的android手机五花八门。各种尺寸的屏幕让android程序员们比較头疼。也有一些大神写了一些博客提出了自己的观点。iOS貌似也迎来了大屏6+,因此屏幕适配的问题也是有滴,因此苹果也有自己的方法-auto Layout 。本人初学iOS。今…

虚拟机里面安装Openfiler 2.99

2019独角兽企业重金招聘Python工程师标准>>> 简介 Openfiler 由rPath Linux驱动,它是一个基于浏览器的免费网络存储管理实用程序,可以在单一框架中提供基于文件的网络连接存储 (NAS) 和基于块的存储区域网 (SAN)。Openfiler 支持 CIFS、NFS、…

win10如何搭建php,Win10系统怎么搭建php环境 win10搭建PHP环境方法

Win10系统怎么搭建php环境?win10搭建PHP环境方法。在今天的Win10系统使用教程中,我们将给大家分享的是在Win10系统下搭建Apache和PHP的开发环境的方法。可能有网友会问:Win10系统搭载Apache和PHP的开发环境的方法是不是与Win7/Win8.1的差不多…

关于jmf不能播放mp3的问题解决

想写个JAVA的MP3音乐管理器,使用JMF插件,但发现运行时总报一个异常:Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 16000.0 frame rate, FrameSize32768 bitsFailed to realize: com.sun.media.P…

git的使用1[转]

在应用程序开发过程中,很重要的一部分工作就是如何进行源码的版本控制。当代码出现问题时,我们就需要将代码恢复到原先正常的版本。如果是多个人共同开发一个项目,那么代码的控制就会非常复杂。幸运的是,开发者不需要自己控制这些…

matlab做比例积分微分控制,收放卷卷径计算+闭环摆杆控制参数自适应PID控制算法(变比例变积分变微分)介绍...

项目简介最近在一个客户现场搞熔边机项目,涉及到收放卷工艺的卷径计算,同时张力控制使用的是摆杆,然后通过PID控制输出辅助转速补偿收卷伺服速度。单一的PID参数不能自动适应卷径变化,如在小卷径200mm下调试整定出的一组PID参数,当…

openfire学习4---android客户端聊天开发之聊天功能开发

前面我们已经把服务器搭建完成,并且在客户端实现了登录了。 和我们使用的QQ一样,想一想,登录成功之后呢?肯定是要有一个好友列表,通过这个列表,我们可以选择我们需要聊天的好友。 这里我们先研究下 xmpp的数…

C#实现冒泡排序

一、算法原理 1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3、针对所有的元素重复以上的步骤,除了最后一…

PHP - 使用 Pear 进行安装和卸载包

安装: 首先运行到php根目录: 输入要安装的包文件名: 使用语法: pear install 要安装包的名称 回车确认: 如果没有其他意外,显示安装成功。查看安装的包的信息: 语句: pear info 包的…

CYQ.Data 轻量数据层之路 V2.0 震撼惊世 支持多数据库/内置Aop(二十五)

所有文章索引:CYQ.Data 轻量数据层之路 框架开源系列 索引 前言: 从V1.5发布到现在时隔20天了,终于发布2.0版本了,2.0系列版本由于引入多数据库支持,内部结构改动较大。 但是外面调用方式仍保持一致向下兼容&#xff0…

SQL Server 2012安装图解

方法/步骤 在资源管理器中双击SQL Server 2012的安装光盘,此时会出现一个安装窗口,在左侧的界面中点击“安装”选项卡,如图所示。然后点击右边的第一项“全新SQL Server 独立安装...”选项。 点击“下一步”按钮继续下一步安装。耐心等待片刻…

Contest - 2014 SWJTU ACM 手速测试赛(2014.10.31)

题目列表: 2146 Problem A【手速】阔绰的Dim2147 Problem B【手速】颓废的Dim2148 Problem C【手速】我的滑板鞋2149 Problem D【手速】潦倒的Dim2150 Problem E【手速】被NTR的Dim2146 Problem A: 简单的最长回文串统计算法,这里没有过高要求…

DFS应用——遍历有向图+判断有向图是否有圈

【0】README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 “DFS应用——遍历有向图判断有向图是否有圈” 的idea 并用源代码加以实现 ;0.2) 判断有向图是否有圈的rule—— 一个有向图是无圈图当且…

AbleCloud智能行业解决方案助力体重秤企业向“中国智造”转变

近年来,体重秤消费群体的年龄层次与需求逐渐向多元化发展,品牌众多、竞争激烈的传统体重秤行业迎来了前所未有的挑战——智能体重秤成为行业发展的大趋势,功能单一、同质化严重已经成为阻碍传统体重秤企业成长的桎梏,打造出具备“…

javaScript事件(一)事件流

一、事件 事件是文档或者浏览器窗口中发生的,特定的交互瞬间。 事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字。 事件是javaScript和DOM之间交互的桥梁。 你若触发,我便执行——事件发生,调用它的…

php输入对话框,如何使用JavaScript实现输入对话框

我们有时在网页上进行注册用户信息时会出现弹窗进行提示,你需要输入内容进行确认,那么,这样的输入对话框是怎么实现的呢?本篇文章就来介绍关于使用JavaScript实现输入对话框的方法。我们可以使用prompt显示输入对话框要在JavaScri…

CodeVS 1081 线段树练习 2

1081 线段树练习 2 时间限制: 1 s空间限制: 128000 KB题目等级 : 大师 Master题目描述 Description给你N个数,有两种操作 1:给区间[a,b]的所有数都增加X 2:询问第i个数是什么? 输入描述 Input Description第一行一个正整数n&#…

iOS开发UI篇—九宫格坐标计算

iOS开发UI篇—九宫格坐标计算 一、要求 完成下面的布局 二、分析 寻找左边的规律,每一个uiview的x坐标和y坐标。 三、实现思路 (1)明确每一块用得是什么view (2)明确每个view之间的父子关系,每个视图都只有一个父视图,拥有很多的子视图。 (3)…