- (instancetype)initWithUrl:(NSURl *)url;
1.反向传值的方式
*delegate
*block
*通知中心
2.delegate:找对象,没有的话定义delegate
3.block(回调)
*好处:可以访问局部变量
4.大名鼎鼎的网络请求类
*ASIHTTTPRequest
*AFNetWoking
5. - 代理方法和-代理方法
#pragma mark - 代理方法(大)
#pragma mark -setting(包含在- 代理方法下面即子部分)
6.如何在对象方法中调用类方法
+ (void)test{
// 同过class 得到类再进行操作
}
7.沙河的三个目录:
*Document (保存重要数据)
*Cache (一般图片数据)
*Tmp
注:其他路径最好不要存,有权限
8.md5是一个不可逆的加密
9.NACache 类:当内存发生警告的时候,系统会自动清空数据
10.NSURL对象初始化注意:
*url里面有空格。
*url里面不能有汉字。
//如果url里面有汉字,需要编码
//有中文需要utf8编码
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
11.NSURLConnection注意点
#pragma mark - NSURLConnection
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
//1.文件名字
NSString *fileName = [response suggestedFilename];
//2.文件大小,单位字节
long long fileSize = [response expectedContentLength];
//3.文件类型
NSString *type = [response MIMEType];
//4.状态码
//200 请求成功;206 断点续传 403:收到请求但拒绝执行 404:请求失败
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
NSInteger code = httpResponse.statusCode;
//5.响应头信息
NSDictionary *headerFields = [httpResponse allHeaderFields];
}
12.NSFileHandle (句柄)
*文件句柄如果path不存在或者是个文件夹路径,当前句柄为空
*path必须是某个文件
*写入时应该将句柄移动到尾部,
13.公共类大家都可以调用,且方便调用,都是类方法
14.absoluteString 将NSURL转化为字符串
15.JSonKit MRC下使用
ASIHtTTPRequest
AFNetWorking
16.nonatomic 非原子,访问速度快
atomic 原子,对Setter方法加锁,访问速度慢 ,消耗性能
17.永久保存:
1.NSUserDefaults:
*用来存储bool,double,float,integer,int,NSURl
NSArray,NSDictionary,NSMutableArray,NSNumber
NSMutableDictionary,NSString
*一般在项目里面配置,(是否程序第一次安装,是否自动登录,保存用户名,保存密码)
*不能保存自定义对象:比如模型,自定义存入数组也不能有
*同步保存 synchronize
*如果key已经存在,会覆盖原来的值
2.归档(序列化)
3.文件保存
4.数据库
18.如果修改了系统库,进入build phases - > link
先添加进来,然后在Finder filed 替换掉
19.只有在入build phases - >copy boundle里的才能用
[NSBundle mainBundle] pathForResource:@"user" ofType:@"plist"];
20,NSNull,Nil,nil
NSNull :一个空的对象
Class clss = Nil; 表示一个类为空
NSObject *object = nil; 表示一个对象为空
22.文件保存
1.plist
2.NSDictionary
3.text,doc
4.NSData
23.使用数据库步骤
1.创建数据库并且打开数据库
2.创建表
3.增删改查
4.关闭数据
24.UITableView 和UICollectionView使用自定义是必须首先要注册
25.取消警告,在编译arc - mrc的敌方加 -w
26.修改键盘的return键
self.textField.returnkeyType = UIReturnNext;
27.隐藏键盘
1.添加点击手势
1>.结束编辑(无需知道到底哪个视图调用了键盘,就可取消)
[self.view endEditing:YES];
2>.取消第一响应者(有多个textField,需要区分时使用)
[self.textField resignFirstResponder];
2.添加点击事件
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
1>.结束编辑(无需知道到底哪个视图调用了键盘,就可取消)
[self.view endEditing:YES];
2>.取消第一响应者(有多个textField,需要区分时使用)
[self.textField resignFirstResponder];
}
28.关联:为现有的类别添加方法
/**
* 关联
* 1.传值
* 2.给类别添加属性
*/
//关联(赋值)
objc_setAssociatedObject(button, &message, array, OBJC_ASSOCIATION_COPY_NONATOMIC);
//取值
id obj = objc_getAssociatedObject(button, &message);
29.app之间的跳转
info.plist - > URL types - >URL Schemes - >oneApp
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"URL Schemes:(冒号必须加,双斜杠可以不加)//URL identifier?(可以加参数)xxx=111"]];
例:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"oneApp://com.qianfeng?xxx=111"]];
/**
* 从其他app跳转回来会触发,或者在其他app里面通过openUrl:调用当前应用此方法会触发。
*/
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// 获取传回来的参数
NSLog(@"---%@",[url absoluteString]);
return YES;
}
30.打电话
// 方式一
// 缺点:不能返回到的当前应用
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"tel:10086"]];
// 方法二
// 拨打完后会自动返回到当前应用,拨打之前会有提示
UIWebView *webView = [[UIWebView alloc]init];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"tel:10086"]]];
[self.view addSubview:webView];
31.代码创建antoLayout注意点
1.不能设置frame
2.不能使用autoResizing
3.添加到父视图中后使用