Cocoa中常用的宏定义

我们在 Cocoa 的头文件中常会看到很多宏定义,这里列举几个可能会用到的

NS_AVAILABLE

这个宏定义常用于 API 版本控制,表明函数/属性的使用版本,是否废弃等情况,用法如下:

该方法在 iOS 4.0 中引入

+ (void)animateWithDuration:(NSTimeInterval)duration 
animations:(void (^)(void))animations
completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);

Read More

如何让自定义 UIView 支持 XIB

当我们拖拽一个 view 到 XIB 上,然后设置 view 属性的时候有没有想到让自己定义的 view 也支持通过 XIB 设置属性,甚至还能实时渲染。

过去相关接口是不开放的,但是从 XCode6 开始,我们也可以定义像系统控件一样支持在 XIB 视图下设置属性并能实时渲染的控件了。

Read More

通过 XIB 加载 UIView

在项目中有些 view 需要独立做成一个组件,供多个 VC 使用,而且本人项目中习惯使用 XIB,所以这个 view 的组件也希望使用 XIB 来实现。但是当我们创建 UIView 的时候默认是不包含 XIB 文件的,这就需要再创建一个同名的 XIB 文件。但是如何把 XIB 和 UIview 关联起来呢。

通常我们通过代码加载 XIB 的方法是:

+(id)viewFromNibNamed:(NSString*)nibName owner:(id)owner{
NSArray* nibView = [[NSBundle mainBundle] loadNibNamed:nibName owner:owner options:nil];
return [nibView firstObject];
}

Read More

HTTPS 详解

移动端的安全问题越来越受到重视,苹果对 iOS 开发已经默认要求使用 HTTPS 了,HTTPS 的安全性毋庸置疑,在移动端使用 HTTPS 通信,可以省去很多安全方面的困扰。这里就简单说一下 HTTPS。

Read More

使用xib加载View的小技巧

本人在开发中比较喜欢用 xib 来作布局,通常情况下,我们需要把一些常用的 view 封装成组件来供大伙儿使用。但是这个组件一般只是负责 view 层的展示任务,事件相关的业务逻辑需要转发到相应的 controller 里面去。这里介绍一下本人使用的一种方法。

直接上代码

Read More

百度 WormHole 漏洞分析

还记得9月份 Xcode 曝 XcodeGhost 漏洞的时候,网络上一片哗然,大家纷纷叹息一直以安全性著称的 iOS 系统也不再安全了,像微信、网易云音乐等安装量过亿的 APP 纷纷中枪。接着是各种漏洞利用的分析,分析一轮下来,最令人咋舌的就是可以通过这个漏洞来获取用户 appleID 了。

然而事过两个月之后百度 Android APP 被爆出了 WormHole 虫洞漏洞,与其说这是一个漏洞,倒不如说这是百度自己留下的一个后门。百度全系APP连同使用了百度地图的APP纷纷中枪,影响用户同样过亿。该后门之流氓程度与XcodeGhost相比有过之而无不及,包括静默下载任意文件、后台上传用户文件等各种流氓行径。

下面就来分析一下 WormHole 漏洞吧

Read More

VCard 格式说明

最近做一个通讯录相关的东西,需要把通讯录导出 VCF 文件。之前没有接触过 VCard 相关的东西,并不知道 VCard 的格式定义。试着导出了一个 VCF 文件看一下,iCloud 导出的 VCF 文件里面部分字段都加着下划线,明显不是本身定义的字段,看起来像是扩展字段的样子,这让我犯了难。既然这样,只能先查一下 VCF 的格式规范了,奈何中文资料并不多,大部分只是对字段进行了说明,而且不够详细,只能硬着头皮去看官方文档了。VCard 的文档在 RFC6350 这份规范上被定义。所以主要看的这个文档。

字段定义就不多言了。出门左转,百度百科。这里只记录一下使用过程中需要注意的点

Read More