如何让自定义对象支持 copy 操作?是重写 copy 方法么?当然不是,而是需要让自定义类实现 NSCopying 协议,该协议只有一个方法:
Continue reading本文记录的是如何更好的编写注释。好的注释,可以让使用者能够像使用官方文档一样,使用
option + 单击
就可查看其使用说明。
本文最终实现的是使用脚本打 Ad-hoc 包,并发布测试,当然稍微修改一下脚本参数就可以打其他类型的 ipa 包了。另外该脚本还实现了将生成的 ipa 包上传至蒲公英进行测试分发。
Continue reading本文谈谈 iOS 开发中的命名规范,主要涉及常量命名、枚举命名、类及其方法命名,以及分类及其方法命名。如果你找的是官网的编码规范,请移步: Coding Guidelines for Cocoa。当然本文会讲一些官网没有的东西。
Continue readingiOS开发中,屏幕适配也是项很重要的工作,本文记录了一些在屏幕适配的过程中与图片相关的工作。
基本概念
首先,理解几个概念: Points, Rendered Pixels, Physical Pixels, Physical Device。
- Points: 是iOS开发中引入的抽象单位,称作点。开发过程中所有基于坐标系的绘制都是以 point 作为单位,在iPhone 2G,3G,3GS的年代,point 和屏幕上的像素是完全一一对应的,即 320 * 480 (points), 也是 320 * 480 (pixels)
- Rendered Pixels: 渲染像素, 以 point 为单位的绘制最终都会渲染成 pixels,这个过程被称为光栅化。基于 point 的坐标系乘以比例因子可以得到基于像素的坐标系,高比例因子会使更多的细节展示,目前的比例因子会是 1x,2x,3x
- Physical Pixels: 物理像素,就是设备屏幕实际的像素
- Physical Device: 设备屏幕的物理长度,使用英寸作为单位。比如iPhone 4屏幕是3.5英寸,iPhone 5 是4英寸,iphone 6是4.7英寸,这里的数字是指手机屏幕对角线的物理长度。实际上会是Physical Pixels的像素值(而不是Rendered Pixels的像素值)会渲染到该屏幕上, 屏幕会有 PPI(pixels-per-inch) 的特性,PPI 的值告诉你每英寸会有多少像素渲染。
本文记录如何在 UIStoryboard 或者 xib 中进行百分比布局,包括
- View.Width 占其 Superview.Width 的百分比
- View.Leading 与 Superview.Leading 间距占 Superview.Width 的百分比
- View.Trailing 与 Superview.Trailing 间距占 Superview.Width 的百分比
- View.Leading 与 Superview.CenterX 间距占父视图 Superview.Width 的百分比
- 限定View的宽高比
- 以 Superview.Width 宽度的某一百分比为 View 之间的间隔
本文转载自: https://github.com/nixzhu/dev-blog
本文翻译自 http://www.raywenderlich.com/63338/grand-central-dispatch-in-depth-part-2
原作者:Derek Selander
前半部分由 Riven 翻译,但他由于太忙而搁置,后由 NIX 整理校对并翻译后半部分。
Continue reading进一步阅读之前,可以先思考这个问题: 存在数组
@[@(90), @(31), @(65), @(78), @(76)]
,如何取出数组中的最大值或者最小值?
KVC 的集合操作符可使用键路径和操作运算作用于集合中的所有元素。本文将描述一些可用的集合操作。
KVC 的集合操作符实际上就是一些特殊的键路径,以参数的形式传递给 valueForKeyPath:
方法。集合操作是以 @*
开始的字符串, 也可理解为: KVC集合操作符允许在
valueForKeyPath:
方法中使用 key path
符号在一个集合中执行方法。无论什么时候你在 key path
中看见了@*,它都代表了一个特定的集合方法,其结果可以被返回或者链接,就像其他的
key path 一样。下图就是集合操作符的格式:
其中左边的键路径(keypathToCollection)指定了相对消息接收者的 NSArray 或者 NSSet,右边的键路径(keypathToProperty)指定了相对于集合内对象的键路径,集合操作作用于该键路径。
Continue reading