IOS开发常见注意点

 

- (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.添加到父视图中后使用

posted @ 2015-10-20 13:37  WEJokers  阅读(206)  评论(0编辑  收藏  举报