前言公司的项目构建使用的是CocoaPods工具,并且利用CocoaPods的插件机制对构建流程进行了深度定制。要了解公司项目的构建流程,势必要先了解一下Cocoapods的插件机制。刚好最近又要改一下同事写的插件,就搜了一下网上关于插件开发的资料,可惜网上的这块资料并不多,大多是插件的安装和使用教程。于是我就写了这篇文章来简单记录一下。当然,实际操作下来发现还是比较简单的。
插件cocoapods-plugins是CocoaPods团队提供的一个用来获取插件信息列表的插件,同时它也提供利用插件模板工程构建插件项目和插件发布的功能。
插件加载原理:CocoaPods插件管理器会通过Rub...
前言最近看到公司同事的《iOS内存那些事》系列文章,其中的一篇文章讲了他在研究WebKit中内存管理的时候,发现可以用phys_footprint来衡量内存,其结果和xcode debug显示的值基本一致。文章通读下来,收获颇丰~回味之余,突然脑洞了一下,为啥不直接逆向一下Xcode,学习一下xcode debug app时它是怎么实现内存监控的?刚好最近在自学逆向知识,顺便也来练练手~
动手实践准备一个小项目运行一下,我们可以在debug面板看到memory report信息{:height=”100%” width=”100%”}
lldb和hopper的使用
通过如下操作,我们可以...
前言经过了云课堂,公开课,中国大学mooc三种旋转需求的考(zhe)验(mo),也踩过了好多坑。虽然之前有写过一篇文章已经小结过一些问题,但现在再读,感觉还探讨地不够,故又补上一篇,希望能就此彻底做个了结。当然,也希望读过此文的童鞋能少走些弯路。。
注:此文提到的旋转包括页面和状态栏
正题3种需求3个app的旋转需求实现难度可以说是从易到难。
云课堂云课堂的需求和实现最简单。相信大部分的app都是这个需求。
需求:进入播放页面默认横屏,同时支持页面自动旋转。
实现:因为是基于设备的系统事件通知来让页面响应旋转,所以关键是只要设置好- (BOOL)shouldAutorotate、- (N...
正题问题描述新版公开课app的iphone版只支持Portrait,但是现在的需求是要求课程详情页面里嵌着的播放器支持从小屏幕旋90度并变为全屏。
分析这是一个典型的旋转相关的问题。根据具体的情况,一般可以分成两类:
基于设备的系统事件通知来让页面响应旋转
关于这一点,以前写过一篇文章其实已经提到过了。关键就是对top-most full-screenVC的理解,这里也就不赘述了。
无视设备的系统事件通知强制让页面旋转
简单粗暴的描述一下就是即便通过设置开启竖屏锁定,也可以通过技术手段任意控制页面布局,而不受设备旋转事件的影响。
回到前面新版公开课描述的需求,其实也就是一个要...
前言从云课堂ipad版本的初步引入到iphone版本的全面使用,不得不说MagicalRecord是一个十分有用的可以让开发人员快速上手复杂core data技术的开源库。趁着iphone版app审核,我也刚好抽空总结一下自己对MagicalRecord的认识。
正文MagicalRecord基于Core Data框架,提供了一系列category方法和类能很方便地操作持久层数据。关于它的使用,官网上有例子,而且也很简单,这里不赘述,具体可以参看《Magical Record: how to make programming with Core Data pleasant》和《Ma...
前言之前有段时间申请到qq测试版本,在使用过程中,发现qq测试版本的升级过程有点小意思。看过之前写的《再谈使用shell脚本build并创建ipa文件》或者网上其他类似文章关于over-the-air分发app的应该都知道,常见的app分发需要用户跳到专门的下载页面去获取新版的app,但是qq测试版本的升级体验则不同,同样是主动提示更新,但它只要在alert上点击确定就可以马上下载安装最新的测试版本,省略了跳转的步骤。个人感觉这样在体验上蛮好,所以就尝试研究了一下。
正文为什么看下文之前,估计还是有人会问为什么会有这样奇怪的需求。这里我觉得还是从用户体验的角度上理解比较简单,个人觉得它可...
前言最近在公司前端群里看到了关于图标字体的文章分享,不禁想到了之前star的fontdiao项目中的关于中文图标的使用。那个项目中介绍的工具通过Homebrew安装较为容易,但是MacPorts安装起来的则有些问题。因为我一直用的MacPorts,而且当时也没在网上搜到相关的解决办法,遂搁置了下来。最近刚好有空闲时间,就趁机研究了一下。
正文安装fontcustom首先追本溯源,制作图标字体的关键是fontcustom。从它的安装说明中可以看到它的显式依赖东东有fontforge,ttfautohint。
fontforge安装这个库是最折腾的。虽然port上可以安装上,但是实际配合fo...
前言关于这个话题,其实在《使用shell脚本build并创建ipa文件)》一文中已经记录过一次。之所以老调重弹,也是因为在新项目的使用过程中,发现那个脚本尚有改进的余地。
正文首先,要感谢lexrus的ios-makefile项目,里面确实有不少可以借鉴学习的地方。虽然那个项目提供的脚本包含了一些蛮有用的功能,但是结合到我现在做的项目,还是有些不能满足我的需求。本来想偷懒直接用来着,看来还是得改改orz。。
需求基本的需求
就是前文所实现的内容:能够从代码产出一份ipa,并且能通过相应的web页面安装。
额外的需求
随着app的版本升级,用户群中是可能同时存在多个版本的。因为不像企业类型...
正题Url Encode问题描述给第三方分享链接的url传递的参数中包含自定义的url,其中自定义的url中包含&符号,导致最终在第三方web端分享界面显示时,缺少自定义url的&符号后面的内容。
分析和处理这个应该是一个典型的url encode的问题。
说到url encode。首先参考rfc2396和rfc3986。
12345The generic URI syntax consists of a hierarchical sequence ofcomponents referred to as the scheme, authority, path, query...
前言每次在xcode上建立一个new project,都会看到一个选项提示是否”Include Unit tests”。基于一些考虑,我也确实未在项目中使用过。如今,随着我开发学习的深入,一方面了解了一些TDD的概念,另一方面也确实在一些开源项目(如asi-http-request)中看到Unit test的身影。看来似乎有必要学习一下iOS开发的一些unit test知识,故也就有了此文。
正文参考iOS开发单元测试的入门文章《unit-testing-in-xcode-4-quick-start-guide》,主要有两个比较常见的框架:OCUnit和GHUnit。另外还有一个单元测试...