OC基础笔记5

来源:互联网 发布:云舒网络 拖欠工资 编辑:程序博客网 时间:2024/05/17 03:46
101,foundation框架是基础框架,有众多应用程序借口API,大致知道里面有哪些方法,OSX大概有80个框架。结构体,枚举,类,是常用的数据类型。常用的类都是NS开头的,因为是乔布斯创建的NEXT公司开发的Next Step系统的简称。
102,常见错误,不小心修改了框架中的头文件,has been modifed。需要删除缓存,在xcode菜但中,找到Locations中的Derived Data,右下角有个Advanced...,点击打开删掉Derived Data中的内容就可以了。Derived Data是一个隐藏文件夹,要输入指令来显示它:defaults write com.apple.finder AppleShowAllFiles-bool true 输入指令后要重启Finder。
103, NSString是一个重要的类,字符串 
三种创建方式,存储的位置不一样,第一个是存在常量区,后两个是堆中,因为类工厂方法也是封装了alloc和init的。而常量和堆都会生成一个地址,放到栈中。
104,在常量区创建的对象如果内容相同,那么这两个对象地址相同。而在堆中,两个对象内容相同,在包括xcode6以下IOS平台地址会不同,作为两个对象看待,xcode6以上就会指向同一块存储空间了而Mac平台也会进行了优化导致地址相同。(通过浅拷贝的方式)所以,如果内容相同,在xcode6以上的IOS平台直接用常量来创建对象更好
105,copy,浅拷贝,只拷贝对象地址,深拷贝,是创建多一个相同的对象。
106,NSString常用方法,读取文件中全部字符串方法:stringWithContentsOfFile:文件路径 encoding:编码(通用的是NSUTF8StringEncoding) error:读取文件是否错误而返回来的信息。带入的参数若不是指针,通常考虑可能是枚举,例如这个编码就是一个枚举。
107,将字符写入某文件的方法:writeOfFile:文件路径 atomically:是否书写结束,没有结束就不成文件 encoding:编码 (可输入的类型)error:写入文件是否错误而返回来的信息。返回的是bool类型,确认是否成功生成的文件
108,error本地描述,接地气的描述,方法localizedDescription
109,当读写文件和互联网接在一起,那么URL就是互联网的“路径/地址”,要有固定的格式。例如http://www.34.com/ios/images/comtent
    协议:// 主机域名(服务器名称\IP地址)/路径
常见的协议开头:http:或https:超文本传输协议资源网络资源,ftp://:文件传输协议,file://:本地电脑文件(一般情况下本机服务器地址可以省略,留下一条斜杠,表示根路径)。
接收一个URL要用到NSURL这个类,和字符串一样,有传入输出方法。当然URL的内容一般先用字符串保存,再赋值给NSURL的
( 如果在这个方法头写上协议类型,那么会自动为传进来的路径加上协议头:fileURLWithPath:,除此自来,这个方法还会自动将路径中的中文进行处理,其他方法则不行,因为URL 本身不支持中文)
想让URL支持中文,还有个办法,就是对中文进行百分号编码:调用:stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding。
将字符串写入同个地址文件时,默认情况下,后一次写入会把前一次写入的覆盖掉
110,字符串比较是否相同:isEqualToString:比较变量内容,返回结果是bool类型
字符串比较大小:compare:大于,小于,等于,三个结果的枚举,字母比较大小时,是比较他们在字母中的顺序,a>b,a>A。
(忽略字母大小的比较:caseInsensitiveCompare:也是三个结果的枚举)
111,判断字符串(包括URL)是不是某某为开头,hasPrefix:@“http://” 返回bool类型。判断是不是以某某为结尾hasSuffix:@“.gif” 返回 bool类型。判断是不是包含某些字符rangeOfString:@“abc” 返回它在字符串中的位置location和长length(也就是NSRange枚举类型,计算时包含符号)。
112,字符串中截取位置和长度,substringWithRange:NSRange类型的对象,返回截取内容。字符串一般都很有可能要变动,所以要动态截取。可以根据两个固定的符号截取。先获取这两个符号的位置,再通过这位置信息计算出要截取的范围range,带入上面的方法进行截取即可 。
默认情况下,寻找一个字符的位置在字符串中是从左到右找起的,有时避免重复会调用方法反过来找,rangeOfString: @"a" options:从前面找a 还是后面(枚举 )。即使反过找,a在字符串中的顺序还是不变的。
还有这种方法获取截内容的位置:
substringFromIndex:什么地方开始截取到末尾;substringToIndex:从开始截取到什么位置
113,常用的结构体(只要是oc提供的结构体,都可以用以下方法创建)
NSRange range = NSMakeRange(NSUInteger loc,NSUInteger len);也就是 NSMakeRange(位置location,长length )
114,字符的替换:stringByReplacingOccurrencesOfString:被替换的字符 withString:用什么来替换。withString后面为@“”就是删除了的意思
字符串首尾内容的替换:stringByTrimmingCharactersInSet:专门用于存放已经分类好的内容的对象NSCharacterSet* 。NSCharacterSet*可以是所有空格或者所有大写字母等等
115,字符串还可以用来判断路径是否是绝对路径isAbsolutePath,路径
以“/”开头的就是了。
获取路径中最后一个目录LastPathComponent,
在最后拼接一个合法的目录stringByAppendingPathComponent,
删除最后一个目录stringByDeletingLastPathComponent,
116,获取字符串中的扩展名,截取后面第一个点后的内容pathExtension
删除字符串中的扩展名stringByDeletingPathExtension
添加字符串中的扩展名stringByAppendingPathExtension
117,常用在服务器返回的字符串内容转换
全部转换为大写uppercaseString
全部转换为小写lowercaseString
首字母转换为大写capitalizedString
全部转换为同一种数据类型intValue(要纯数字不包含字母)
c字符串转换成oc字符串stringWithUTF8String: xxx
oc字符串转换成c字符串 UTF8String(返回的是常量)
118,可变的类,都会加上Mutable,例如NSMutableString
可变字符串,是NSString的子类。不可变的类只要改变了就会创建一个新的对象,而可变的就会在本身改变内容,操作的都是同一个内存,不会返回一个新的对象。使用appendString:续写字符串。appendFormat:可组合的字符串续写。删除某部分deleteCharactersInRange:被删除的内容的位置。在第几个字符前插入字符insertString:字符 aiIndex:第几位。(如果调用的是父类的方法,也都会返回一个新的对象)。替换字符:replaceOccurrencesOfString:被替换的字符 withString:用什么来替换 options:搜索方式的枚举 range:搜索范围(返回修改的个数)。字符经常需要改动的,最好用可变的字符串
119,oc中的数组NSArray,也有可变的子类NSMutableArray,不可变时常用的创建对象方法arrayWithObjects:(id),有个“s”是用于传入多个元素,并用nil来结束,也可以用@[@“aaa”,@“bbb”]放入多个元素的方式来创建数组。输出的内容会有个圆括号括着。可以间接存储多种类型(不是oc对象的需要先转为oc对象)。
120,计算数组中元素总个数count方法,获取最后一个元素lastObject,第一个firstObject,获取第几个objectAtIndex:(或者arr[第n个]),检查有没有bool某个元素containsObject:
121,常规遍历方法是用for循环的,还可以用for(接收者 in 某一个数组),还可以用迭代器 enumerateObjectsUsingBlock:^(id 获取的对象,id 第几个,bool停止遍历){ 将接受到的遍历内容一个个通过此代码块来处理 };就像一个流水线一样
122,数组可以全体动员,也就是每一个同类型的元素都会做同一件事
都调用同一个方法makeObjectsPerformSelector:调用的方法
或者是makeObjectsPerformSelector:调用的方法 withObject:前面所调用方法的参数
不同的元素就要用上面的迭代器来实现部分元素的方法调用了
123,数组的排序
sortedArrayUsingSelector:排序的方法(通常是compare方法,但只能使用于foundation框架的对象例如NSString,不能用于自定义对象Person等)
自定义对象时,就要明确按照怎样的规则去排列,sortedArrayWithOptions:排序方式的枚举 usingComparator:一个代码块(回车即可),通过一次两个的对象进行比较,默认为升序排序。
124,将数组中的每一个元素连接起来生成一个字符串componentsJoinedByString:通过什么字符来连接
将字符串切割生成一个数组
componentsSeparatedByString:通过什么字符来拆分
125,数组也可以读出写入文件,和字符串的方法差不多,在写入文件中时,本质是写入了一个可读性很高的XML类型的文件,开发中扩展名是.plist(用xcode来打开的)
但是用上面字符串读写的两种方法在数组中,也是不能用于自定义对象的。
0 0
原创粉丝点击