iOS平台在快速的发展,各种接口正在不断的更新。随着iOS9的发布,又有一批老方法不推荐使用了,你若调用这些方法,运行的结果是没有问题的,但是会出现警告“***is deprecated :first deprecated in iOS 9.0 - Use *******”.就像如图所示:

在实际项目开发中,我们要秉承一个信念就是:要把每一个警告当做错误来处理,并解决每一个警告。你想想,你运行一个项目,就算运行成功了,但是出现几十个、甚至几百个黄黄的警告,心情是不是很糟糕呢?我将在这篇博客结合我的开发经验,罗列出iOS9中不推荐使用的方法,并换成苹果最新推荐的方式。本篇博客将会持续更新。

1.【弹出提示对话框】

在iOS9之前我们使用AlertView来弹出对话框,现在推荐使用AlertController

2.【stringByAddingPercentEncodingWithAllowedCharacters替换stringByAddingPercentEscapesUsingEncoding】

这个方法真的好长。。。我们使用这个方法来进行字符串编码方式的更改。最常用的地方就是进行Http网络请求的时候,发送的链接的参数中如果带有中文,那么首先就需要调用这个方法把编码方式改为utf8,因为服务器端一般都使用utf8编码。两者实现的功能一样。

1
2
//以下方法已经不推荐使用;
  //  NSString *urlStr = [@http://v.juhe.cn/weather/index?format=2&cityname=北京&key=88e194ce72b455563c3bed01d5f967c5stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
1
2
//建议使用这个方法stringByAddingPercentEncodingWithAllowedCharacters,不推荐使用stringByAddingPercentEscapesUsingEncoding;
 NSString *urlStr2 = [@http://v.juhe.cn/weather/index?format=2&cityname=北京&key=88e194ce72b455563c3bed01d5f967c5 stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

3.【NSURLSession替换NSURLConnection】

NSURLSession已经渐渐走上历史舞台了。最近使用[NSURLConnection sendAsynchronousRequest]时已经警告为不推荐使用了,那我们就换成NSURLSession中的dataTaskWithRequest方法吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//以下方法已经被禁用;
  NSOperationQueue *queue = [[NSOperationQueue alloc] init];
 
[NSURLConnection
 sendAsynchronousRequest:urlRequest
 queue:queue
 completionHandler:^(NSURLResponse *response,
                     NSData *data,
                     NSError *error) {
    
   if ([data length] >0  &&
       error == nil){
     NSString *html = [[NSString alloc] initWithData:data
                                            encoding:NSUTF8StringEncoding];
     resault=[html copy];
      
     NSLog(@返回的服务器数据 = %@, html);
   }
   else if ([data length] == 0 &&
            error == nil){
     NSLog(@Nothing was downloaded.);
   }
   else if (error != nil){
     NSLog(@发生错误 = %@, error);
   }
    
 }];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//推荐使用这种请求方法;
NSURLSession *session = [NSURLSession sharedSession];
 
__block  NSString *result = @;
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
   
  if (!error) {
    //没有错误,返回正确;
    result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@返回正确:%@,result);
     
  }else{
    //出现错误;
    NSLog(@错误信息:%@,error);
  }
   
}];
 
 
[dataTask resume];

总结iOS9中的新的方法的更多相关文章

  1. iOS9 中关闭ATS的方法

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) iOS9中增加了系统的安全性,你会发现默认情况下打开非http ...

  2. iOS9中关于地址簿ABAddressBookXXX之类方法被废弃的解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在iOS9的SDK中我们会发现原来地址簿权限查询,获取以及创建 ...

  3. HTML5 中的新属性autocomplete="off"失效的解决方法(兼容firefox,IE,360)

    因为业务需求,在写一个注册页面的时候,发现浏览器会自动填充此域名下已经保存的账号密码,给用户带来不便.加了HTML5 中的新属性autocomplete="off" ,但是并没有产 ...

  4. Web设计中打开新页面或页面跳转的方法 js跳转页面

    Web设计中打开新页面或页面跳转的方法 一.asp.net c# 打开新页面或页面跳转 1. 最常用的页面跳转(原窗口被替代):Response.Redirect("newpage.aspx ...

  5. VMware 虚拟机中添加新硬盘的方法(转载)

    随着在虚拟机中存储的东西的逐渐的增加,虚拟机的硬盘也逐渐告急,因此急需拓展一块新的虚拟磁盘.以下便是在VMware 中添加新的虚拟磁盘的方法:   一.VMware新增磁盘的设置步骤 (建议:在设置虚 ...

  6. 详解VMware 虚拟机中添加新硬盘的方法

    一.VMware新增磁盘的设置步骤 (建议:在设置虚拟的时候,不要运行虚拟机的系统,不然添加了新的虚拟磁盘则要重启虚拟机) 1.选择“VM”----“设置”并打开,将光标定位在“硬盘(SCSI)”这一 ...

  7. 谈谈iOS9中的WebKit 与 Safari

    每个用过 UIWebView 的iOS开发者对其诸多的限制和有限的功能也深有感触.悻然,自iOS8推出 WebKit 框架后将改变这一窘境.在本文我将会深入WebKit来体验一下它给我们带来的好处,同 ...

  8. 获取通讯录的信息(关于iOS9.0之后新的框架-ContactFramework)

    转载自:http://my.oschina.net/u/2340880/blog/511995?p={{totalPage}} 一.引言 在以前iOS开发中,涉及联系人相关的编程,代码都非常繁琐,并且 ...

  9. IOS9中联系人对象的使用及增删改查操作的函数封装

    之前克服重重困难把IOS9中新的类联系人搞明白了,现在把增删改查封装成了函数,如下: // // ViewController.m // IOS9中联系人CNContact的使用 // // Crea ...

随机推荐

  1. iOS:使用贝塞尔曲线绘制图表(折线图、柱状图、饼状图)

    1.介绍: UIBezierPath :画贝塞尔曲线的path类 UIBezierPath定义 : 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度. 曲线的定义有四个点:起始点 ...

  2. 移植tslib和Qt5.6到三星s5pv210开发板

    tslib1.4移植 下载tslib1.4后 1.cp tslib-1.4.tar.bz2 /home/gec 2.tar jxvf tslib-1.4.tar.bz2 3.sudo -s 4.cd ...

  3. IOS 预处理语句

    程序中的源代码计算机是无法识别的,需要将写好的代码转成0.1二进制代码,计算机才能识别.将源代码转成二进制代码的需要经过两步,编译和链接.编译是通过编译器将每个文件的代码都转为二进制代码,在这个过程中 ...

  4. Gnome桌面的下拉式终端: Guake

    什么是Guake? Guake是应用于Gnome环境的下拉式终端.主要由Python编写,使用了一些C,它以GPL2+许可证发布,适用于Linux以及类似的系统.Guake的灵感来源于电脑游戏Quak ...

  5. 【pyhon】黑客用字典暴力破解Zip文件密码原理性展示

    基本原理:用程序把字典文件里拟定好的密码一个个提取出来,去测试zip能否打开 字典文件pass.txt内容: 1224 2121 asdf abcd1234 dwsdsd dssds 程序代码: # ...

  6. CentOS系统时间同步(NTP)

    CentOS系统时间同步的步骤如下: 新装的CentOS系统服务器可能设置了错误的,需要调整时区并调整时间. 如下是CentOS系统使用NTP来从一个时间服务器同步把当前时区调整为上海就是+8区,想改 ...

  7. android-关于友盟的自动版本更新(面向小白)

    今天说一下关于友盟的自动版本更新(傻瓜式版本更新) 关于自动更新的话,如果让android程序猿自己写的话还是不是那么简单的(对于我这个菜鸟来说...),又要检查当前版本,又要在服务器存储新的版本,又 ...

  8. SQL Server 之 与 OVER() 函数

    在SQL SERVER 2005/2008支持两种排名开窗函数和聚集开窗函数. 一. OVER() 函数 语法结构:OVER( [ PARTITION BY ... ] [ ORDER BY ... ...

  9. hdu 2896 AC自动机模版题

    题意:输出出现模式串的id,还是用end记录id就可以了. 本题有个关键点:“以上字符串中字符都是ASCII码可见字符(不包括回车).”  -----也就说AC自动机的Trie树需要128个单词分支. ...

  10. Nginx搭建flv mp4流媒体服务器[转]

    Nginx搭建flv mp4流媒体服务器 作者:二蛋 时间:December 1, 2014 分类:Note 环境:Centos 6.4 32bit 一.安装依赖包 1.安装zlib wget htt ...