5,代理模式, (传入的对象,代替当前类完成了某个功能,称为代理模式)
思路:
1)定义一个协议,里面声明代理类需要实现的方法列表, 比如这里一个代理类需要实现
findHouse方法
@protocol findHouseProtocol <NSObject>
-(void)findHouse;
@end
2)创建一个代理类(比如LinkHome),遵守上面的代理协议
@interface LinkHome : NSObject<findHouseProtocol>
@end
3)在需要代理的类中(Student),定义一个对象类型为id且遵守代理协议的成员变量
@property(nonatomic, strong)id <findHouseProtocol>delegate;
4)在Student类中调用成员变量_delegate(代理)的方法,调用代理类的方法
[self.delegate findHouse];
5)main.m或其他使用Student类的文件中,为Student类的成员变量(代理类)赋值
LinkHome *linkHome = [LinkHome new];
stu.delegate = linkHome;
通过中介找房子的代码自己敲一遍;
6,@protocol关键字,告诉编译器,这是一个协议.
在.m文件中使用的时候,需要导入这个协议.
@protocol delegate; 声明一个协议.
@class Person; 声明一个类。
7,Foundation框架
框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易.
Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)
显示隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool true
隐藏隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool false
8,NSString的用法
1).直接创建方式:
NSString *str = @"abc";
2).格式化创建:
NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"];
NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];
3).文本编码:
中文 :GBK(2个字节) GB2312(2个字节)
UTF - 8:国际通用编码(3个字节)
4). 字符串写入文件:
//错误对象
NSError *err;
[str writeToFile:@"/Users/zhaoxiaohu/Desktop/" atomically:YES encoding:NSUTF8StringEncoding error:&err];
5).字符串从文件读取:
NSString *str = [NSString stringWithContentsOfFile:@"/Users/zhaoxiaohu/Desktop/str.txt" encoding:NSUTF8StringEncoding error:&err];
6).字符串比较函数:
NSComparisonResult result = [str1 compare:str2];
//比较的时候,不区分大小写,参考字符的个数进行比较
NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];
返回值:
NSOrderedAscending(str1<str2)升序
NSOrderedDescending(str1>str2)降序
NSOrderedSame(str1 = str2)相等
7). 判读字符串是否相等:
NSString *str1 = @"abc";
NSString *str2 = @"abc";
str1 == str2 比较的是地址 (==比较的是字符串的地址)
[str1 isEqualToString:str3],比较的是内容,区分大小写(这个方法非常常用)
8). 检测字符串前后缀:
NSString *url = @"http://asdfasdfasdfaasdfadsfaf";
[url hasPrefix:@"http://"]; 字符串是否以http:开头
NSString *imgName = @"logo.jpg";
[imgName hasSuffix:@".jpg"]; 检测字符串是否以.jpg结尾
9).查找字符串:
NSString *str = @"asitcastdfafsadfxyz asdfasdfsadfa sadf";
NSRange range = [str rangeOfString:@"itcast"];
//NSNotFound 是一个最大的long 无符号数
//如果查找不到 range.location 是一个最大的long 无符号数
//range.location 表示字符串首次出现的位置
//range.length 表示子字符串的长度
if (range.location != NSNotFound) {
NSLog(@"位置:%lu,长度:%lu",range.location,range.length);
}else{
NSLog(@"没有查找到");
}
格式:
NSRange range = [str1 rangeofString:str2]; //str1 中找str2 |
|