iOS梦工厂

iCocos——不战胜自己,何以改变未来!

重量级-MVC-MVVM-DC

| Comments

首先再这里祝大家新年快乐…….

新的一年来点重量级的东西,那么是什么呢?

相信你既然能看到这篇文章,那么一定听说过MVC,什么没有听过?出门左转找度娘,不送!

如果你听说过MVC,那么或许你听说过MVVM,这里可能很多人对MVVM并不了解,或许只是听过,但是没有用过,有些就算用过还是不清楚里面的关系,只是搬砖而已。

对了,今天我们讨论的就是一个类MVVM的技术,也就是在MVVM上面的一个增强版的开发模式!

MVVM不正是MVC的增强版吗?

好了下面正式开始,新年不能耽误大家太多时间搬砖,,哈哈!

Model-View-Controller

你还在等什么?

| Comments

最近,一直在寻找灵感,摸索新技术,提高个人的开发能力,比如swift开源代码,也在研究前端开发,但是偶尔看到一个问题,学了这么久,也做了这么久,突然发现很多东西都忘了,或者说搞不太清楚,就是有些相似的弄混了,最后网上到处找。看完之后我也颇有感受,也想了很久,觉得整理一份重要的总结。

宗旨内容如下:

  • 1:ios开发中常见技术的总结(主要是区别)
  • 2:作为一个iOS程序员必备的常识问题
  • 3:作为面试必备的一份宝典
  • 4:初学者快速了解相关技术
  • 5:老程序员快速回顾混淆,忘记的知识点

后续我也会一直讲本文更新下去,有露点或者错误的地方望指出,或者联系,相互交流技术,谢谢!

好了开始吧。。。。。。。。。。。

Git+SoureTree实战

| Comments

由于之前一直使用SVN(Cornerstone),最近手痒痒的想弄一下git,听说soureTree不错,就花了一段时间研究了一下,并记录下来!

GitHub相信大家都知道,上面有很多优秀的开源项目供我们学习,比较著名的类似AFNetworking、SDWebImage等等。本篇文章就是教大家如何在Mac系统下提交自己的项目到GitHub上,相信对于新手还是很有帮助的。

首先我们必须先从git命令开始,没有为什么!

需要的工具

操作流程

  • 1.GitHub 上注册账号 https://github.com/ 去这上面注册下就行(这里就不多说,自己去做吧)。

  • 2.配置 SSH key

iOS9-CoreSpotlight

| Comments

iOS9 Day-by-Day是作者Chris Grant新开的一个系列博客,覆盖了iOS开发者必须知道的关于iOS 9的新技术与API,并且还进行了实际操作演练,每篇文章中相关的代码Chris都会将其托管到GitHub。

在第一篇文章中,Chris介绍了iOS 9的三种搜索API,分别为:

  • NSUserActivity,索引用户活动以及App的状态。

  • Web Markup,Web内容可被搜索。

  • iOS 9新增的CoreSpotlight.framework提供了增、删、改、查等搜索API,可以索引App的内容。 译文如下:

在苹果发布iOS 9之前,你只能在Spotlight中输入名称来寻找App,而随着苹果发布了一套全新的iOS 9 Search APIs之后,开发者不但可以自由选择App的部分内容编入索引,还能对Spotlight上的搜索结果以及点击不同结果显示的内容进行设置。

三大API

iOS9-WKWebView+SFSafariViewController

| Comments

一:WKWebView简单介绍

webkit使用WKWebView来代替IOS的UIWebView和OSX的WebView,并且使用Nitro JavaScript引擎,这意味着所有第三方浏览器运行JavaScript将会跟safari一样快。

先来看看WKWebView和UIWebView有什么区别:

UIWebView:
  • 始祖级别,支持的iOS版本比较多
  • 可支持打开URL,包括各种URL模式,例如 Https,FTP等
  • 可支持打开各种不同文件格式,例如 txt,docx,ppt,,音视频文件等,很多文档阅读器会经常使用这个特性,感兴趣的可以查一下Apple的文档,支持的格式还是挺多,只是不同iOS 版本的支持程度不太一样,使用时请多留意测试确认~
  • 占用内存比较多,尤其是网页中包含比较多CSS+DIV之类内容时,很容易出现内存警告(Memory Warning)
  • 效率低,不灵活,尤其是和 JavaScript交互时
  • 无法清除本地存储数据(Local Storage)
  • 代理(delegate)之间的回调比较麻烦,提供的内容比较低级,尤其是UI部分。如果想自己定制一个类似 Safari 的内嵌浏览器(Browser),那就坑爹无极限了,例如我们PDF Reader系列中的内嵌Browser,自己* 手动模拟实现Tab切换,底部Tool及各种Menu等,说多了都是泪~~
WKWebView:
  • iOS 8引入的,比较年轻
  • 在内存和执行效率上要比UIWebView高很多
  • 开放度较高但据说Bug成吨
  • 类似UIWebView,UI定制比较麻烦···
  • 没具体测试使用过,就不继续列举了 L~

iOS9-Unit Test

| Comments

XCode7(iOS9)中新增了跟多特性,包括:

  • WKWebView+SFSafariViewController
  • UI Test
  • Multitasking
  • watchOS 2
  • Swift 2
  • App Thinning
  • 人工智能和搜索 API
  • HomeKit,CloudKit,HealthKit 等等杂七杂八的框架

前面的文章中我们已经将WKWebView+SFSafariViewController完整的介绍了一遍,现在我们就开始着手探究一下单元测试(后面的文章中我将会集中介绍一下常用功能新特性),敬请关注:iOS梦工厂

UI Tests是什么?

UI Tests是一个自动测试UI与交互的Testing组件

iOS9+Xcode7总结

| Comments

刚更新了Xcode 9 beat 2,运行了之前的工程,发现了一些问题,就针对性的做了一下iOS9的适配。

1,默认使用HTTPS请求

如果在Xcode 9之前使用的时http请求,那么在XCode 9上编译的App是不能联网的,会提示如下错误:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

修改方法是要么使服务器支持https访问,要么关闭https的使用。第一种方法对于个人开发者来说代价还是比较大的,因此推荐使用后面一种方法,具体的做法是:在工程的Info.plist文件里添加NSAppTransportSecurity字典类型的,添加一个元素:key为NSAllowsArbitraryLoads,值为YES。

Apple介绍了iOS9中的App Transport Security,它要求所有App在默认情况下使用HTTPS来进行网络请求。由于不是所有的服务器都运行在HTTPS环境下,Apple也提供了相关的方法来禁用ATS。

  • 最后:出于数据安全考虑,在完全禁用ATS的情况下,你也应该为某些重要的站点打开ATS。你可以通过NSExceptionDomainskey来禁用/启用特定的站点的ATS。参照如下图片:

  • 该plist文件允许用户在HTTP环境下下载文件,但是只能在HTTPS情况下访问"workflow.is"

需要提醒的是,ATS的设置只针对当前bundle。这意味着你不仅需要在你主项目的info.plist中添加ATS相关的Key,同时也需要在其他bundle下的info.plist中添加相关配置。

关于iOS9的适配,github上有一个中文项目iOS9AdaptationTips可以提供很大的帮助。

2,iOS 9使用URL scheme必须将其加入白名单

否则会提示类似如下错误:

粘包&封包&拆包

| Comments

今天偶尔看到了一个关于网络底层的技术,粘包,结果花了一段时间摸索了一下,找了一些资料并总结了一翻,希望有用!

两个简单概念长连接与短连接:

1.长连接
Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。
2.短连接
Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点

通讯,比如多个Client连接一个Server.

什么时候需要考虑粘包问题?

iBeacon初探

| Comments

iBeacon 是苹果公司在 iOS 7 中新推出的一种近场定位技术,可以感知一个附近的 iBeacon 信标的存在。 当一个 iBeacon 兼容设备进入/退出一个 iBeacon 信标标识的区域时,iOS 和支持 iBeacon 的 app 就能得知这一信息,从而对用户发出相应的通知。

典型的应用场景例如博物馆实时推送附近展品的相关信息,商场内即时通知客户折扣信息 等。苹果在 Apple Store 中也部署了 iBeacon 来推送优惠、活动信息。

Watch OS2 初探

| Comments

这一年的WWDC大会上,苹果公司推出了watchOS 2,这标志着Apple Watch的开发产生了巨大的变化。现在,你可以开发能运行在你手表上原生的app了。 在这篇watchOS 2教程中,你会开发一个简单但是功能齐全的watchOS 2的app。 在这个过程中,你会学到:

  • 如何为iOS app添加watchOS 2的target
  • 如何在两个target之间共享数据
  • 如何添加一个watchOS 2界面控制器到Storyboard,并放置界面对象
  • 如何创建WKInterfaceController的子类并连线