中国领先的IT技术网站
|
|

斯坦福iOS7公开课11笔记及演示Demo&访问HTTPS链接下载数据

这一节主要介绍UITableView以及iPad,Demo为从Flicker下载图片并显示,但是实际过程中发现需要FQ并使用HTTPS连接,所以这次用了两个Demo,一个是课程中的Demo,另一个是简化的。最后调试过程中还找到Xcode中观察变量的一个小技巧。

作者:Colinhou来源:cnblogs|2014-09-09 12:48

Tech Neo技术沙龙 | 11月25号,九州云/ZStack与您一起探讨云时代网络边界管理实践


这一节主要介绍UITableView以及iPad,Demo为从Flicker下载图片并显示,但是实际过程中发现需要FQ并使用HTTPS连接,所以这次用了两个Demo,一个是课程中的Demo,另一个是简化的。

最后调试过程中还找到Xcode中观察变量的一个小技巧。

一.UITableView

UITableView是iOS中最常用的表视图,通讯录中的联系人、手机设置里的每一个选项都是表视图中的一个单元格cell,微信、微博每一条记录其实也是一个cell,只不过是组成要素更多一些而已。

1)两个重要的协议

UITableViewDataSource和UITableViewDelegate是UITableView里两个重要的协议(可以把协议理解成接口),前者用来实现单元格数据源的控制,包括两个必须实现的:指定单元格cell数量以及分组数量,其他诸如删除、移动等操作也是通过实现这个协议里的方法来使用。

&;&; UITableViewDelegate,这个协议提供用户与UITableView交互操作的一系列方法,比如最常用的点击单元格的响应方法

2)cell的复用

为了节约资源,iOS会对cell进行复用,单独有一个地方存放移出屏幕的cell,当向上滑动UITableView时,如果队列中有可复用的cell,就可以直接取出使用,需要注意的是,这里的复用有一个限制条件,即cell的样式都相同。

二.iPad特有控件

 iPad中有两种常用UI控件,弹出窗口UIPopoverController和目录-内容组合控件UISplitViewController,本次 课程介绍了后者,UISplitViewController由两个视图组成,一个是目录视图master,一个是内容视图detail,Demo就是通 过master中使用UITableView显示图片名称,点击后在内容视图detail里加载对应图片。

这里有两点值得注意:

(1)根据UISplitViewController为iPad独有控件直接判断设备是iPhone还是 iPad,UISplitViewController默认0是master目录视图,1是detail内容视图,使用 UISplitViewController下,如果获取不到内容视图,设备就是iPhone,反之iPad。

(2)UISplitViewController协议里提供了方法来解决横竖屏时master视图是否显示的问题 ,需要注意的是,UISplitViewControllerDelegate很特殊,需要在viewDidLoad之前设置

三.Demo过程问题总结

Flicker目前被墙,所以需要FQ访问,注册申请API的key即可,验证发现只能通过HTTPS访问,所以对FilckerFetcher里的地址都修改成HTTPS

下载得到的数据一直为nil,报错也是提示数据空,检查发现,请求HTTPS连接时不能使用+dataWithContentsOfURL:这个方法,因为无法设置安全验证相关,而请求HTTPS连接是必须对安全验证进行设置的,否则请求失败,所以得不到数据。

;参考:http://stackoverflow.com/questions/14013307/datawithcontentsofurl-ios-https-self-signed-certificate

这里使用了NSURLConnection的委托方法,来使客户端忽略证书验证

参考:http://www.cnblogs.com/stan0714/archive/2012/03/21/2409872.html

还有其它方法,没有进行尝试,这种方法据说是苹果不允许的,提交应用时会有问题。

http://stackoverflow.com/questions/19394628/cant-receive-json-request-via-https-due-to-untrusted-certificate

还遇到一个问题就是获取图片数据时报错,这是因为图片接收不完全,现象图片在屏幕上显示一小部分立即消失,原因是之前只接受了部分数据就马上转化图片,并通知主线程更新UI

实际上应该数据接收完全后再做后续操作,因为数据可能需要多次才传输完全。

同样问题后来也出现在获取图片列表的json数据时(只是当时恰好数据一次就获取完全过,没注意处理)

 四.调试小技巧

用鼠标选中变量或者下方观察变量都可以,但有时始终觉得不方便,断点调试时可以在输出窗口输入“po 变量名”来观察变量赋值情况

目前完整版Demo点击单元格还有bug,欢迎解决后告知原因,若有更新也会及时补充。

简化版Demo下载  完整版Demo下载
本文链接:http://www.cnblogs.com/colinhou/p/3952799.html

【编辑推荐】

  1. iOS 通知中心扩展 制作总结与Demo
  2. android httpClient 支持HTTPS的访问方式
【责任编辑:chenqingxiang TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

安全模式:J2EE、Web服务和身份管理最佳实践与策

本书全面阐述Java应用安全的基本知识并介绍一种强大的结构化安全设计方法;介绍独立于厂商的安全架构;列出详细的评估核对表以及23种经过实...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× CTO训练营(深圳站)