id 和instancetype
1、instancetype只能作为函数或者方法的返回值
2、id能作为方法或者函数的返回值、参数类型,也能作为定义变量
3、instancetype能精确的限制返回值的具体类型
protocol代理设计模式
传入的对象,代替当前类完成了某个功能,为带了模式
利用协议实现代理模式:
1、定义一个协议,里面声明代理类需要实现的方法列表,如代理类需要实现feelBaby和HongSleep方法
2、创建一个代理类(BaoMu),遵守上面的代理协议
3、在需要代理的类(Baby)中,定义一个对象类型为id且遵守代理协议的成员变量
4、在Baby类中调用成员变量_delegate(代理)的方法,调用代理类的方法
5、mian.m或其他使用Baby类的文件中,为Baby类的成员变量(代理类)赋值
代理模式的场合:
监听器的场合
通知的唱哈
有些事情,不想自己处理,想交给别人处理
Foundation框架
由许多类、方法、函数、文档按照一定的逻辑组织起来的集合。
NSString 介绍
一个NSString对象就代表一个字符串(文字内容),一般称NSString为字符串类
- 1.最直接的方式:
-
- NSString *str = @"abc"; //字符串在常量区
-
- 2.格式化的方式:
-
- NSString *str2 = [NSString stringWithFormat:@"%@","jack"];
- //自字符串在堆区
-
- 3.从文件读取
-
- //定义字符串
- NSString *str3 = @"welcome to luoyang";
-
- NSError *err;//开始写入字符
-
- [str writeToFile:@"/User/ning/Desktop/1.txt" atomically:YES encoding:NSUTF8StringEncoding error:&err];
-
- //判断是否出错
- if(err != nil){
- NSLog(@"写入失败");
- }else{
- NSLog(@"写入成功");
- }
-
- 从文件读入
- NSString *str4 = [NSString stringWithContentsOfFile:@"/User/apple/Desktop/1.txt " enconding:NSUTF8StringEncoding error:&err];
-
- //如果读取到内容
- if( errr == nil){NSLog(@"读取成功");}
- else{NSLog(@"读取失败");}
URL全称Uniform Resource Locator(统一资源定位符)
格式:协议 服务器的域名 路径 http://ios.itast.cn/ios/images/content 25.jpg
常见的URL协议头
http https ftp
- 传入完整的字符串的创建
- NSURL *url = [NSURL URLWithString :@"file:///Users/apple/Desktop/1.txt"]
-
- 通过文件路径创建
- NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/1.txt"];
NSString的常见方法:
-(NSString *)uppercaseString;
全部字符转为大写字符
-(NSString *)lowercaseString;
全部字符转为小字符
-(NSString *)capitalizedString;
首字母大写,其他字母都变小写,如果一个句子中有多个单词,那么将会每个单词的首字母变成大写
-(BOOL)isEqualTostring:(NSString *)aString;
两个字符串的内容相同就返回YES,否则NO
比较的是两个对象的地址是否相同,不是内容
-(NSComparisonResult)compare:(NSString *)string;
-(NSComparisonResult)compare:(NSString *)string options:NSCaseInsensitiveSearch];
NSCaseInsensitiveSearch:不区分大小写
NSLiteralSearch:进行完全比较,区分大小写。(默认)
NSNumericSearch:比较字符串的字符个数,而不是字符值。
比较两个字符串的内容的大小
-(BOOL)hasPrefix:(NSString *)aString;
是否以aString开头
- NSString *str = @"http://www.baidu.cn";
-
- BOOL isYes = [str hasPrefix:@"http://"];判断是否合法的网址
-(BOOL)hasSuffix:(NSString *)astring;
判断字符串的后缀
-(NSRange)rangeOfString:(NSString *)aString;
用来检查字符串内容是否包含aString
- NSString *str = @"http://ios.itcast.cn";
- NSRange range = [str rangeOfString:@"itcast"];
反向搜索:[str rangeOfString :@"str" options:NSBackwarksSearch];
-(NSString *)substringFromIndex:(NSUInteger)from;
从指定的位置开始到尾部
-(NSString *)substringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
-(NSString *)substringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子串
-(NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
-(NSUInteger)length;
返回字符串的长度
-(unichar)charaterAtIndex:(NSUInteger )index;
返回index位置对应的字符
+ (id)whitespaceCharacterSet; //去掉头尾空格
+ (id)lowercaseLetterCharacterSet; // 去掉头尾的小写字母
+ (id)uppercaseLetterCharacterSet; //去掉头尾的大写字母
+ (id)characterSetWithCharactersInString:(NSString *)aString; // 去掉头尾的指定字符串
去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSRange使用
创建方式:
<span style="font-size:18px;"><span style="white-space:pre"> </span><span style="color:#3333ff;">NSRange range;
range.location = 7; range.length = 3;
NSRange range = {7,3};
NSRange range = {.location = 7,.length = 3};
NSRange range = NSMakeRange(7,3);
NSRange range;
range.location = 7; range.length = 3;
NSRange range = {7,3};
NSRange range = {.location = 7,.length = 3};
NSRange range = NSMakeRange(7,3);</span></span>