CaveOps: Night-City
#Hello Edgerunners, welcome to the Night-City.

Welcome!

iOS 面试题: loadView

最近遇到和看到的一些面试题。 loadView 是干嘛用的? 当你访问一个ViewController的view属性时,如果此时view的值是nil,那么,ViewController就会自动调用loadView这个方法。这个方法就会加载或者创建一个view对象,赋值给view属性。 loadView 默认做的事情是: 如果此ViewController存在一个对应的nib文件,那么就加载这个nib。否则,就创建一个UIView对象。 如果你用Interface Builder来创建界面,那么不应该重载这个方法。 如果你想自己创建view对象,那么可以重载这个方法。此时你需要自己给view属性...

iOS 面试题: viewWillLayoutSubView

最近遇到和看到的一些面试题。 viewWillLayoutSubView 你总是知道的。 横竖屏切换的时候,系统会响应一些函数,其中 viewWillLayoutSubviews 和 viewDidLayoutSubviews。 - (void)viewWillLayoutSubviews { [self _shouldRotateToOrientation:(UIDeviceOrientation)[UIApplication sharedApplication].statusBarOrientation]; } - (void)_shouldRotateToOrientation...

iOS 面试题: 什么是ARC

最近遇到和看到的一些面试题。 什么是ARC?(ARC是为了解决什么问题诞生的?) 首先解释ARC: automatic reference counting自动引用计数。 ARC几个要点: 在对象被创建时 retain count +1,在对象被release时 retain count -1.当retain count 为0 时,销毁对象。 程序中加入autoreleasepool的对象会由系统自动加上autorelease方法,如果该对象引用计数为0,则销毁。 那么ARC是为了解决什么问题诞生的呢?这个得追溯到MRC手动内存管理时代说起。 MRC下内存管理的缺点: 当我们要释放一个堆...

iOS 面试题: 使用 drawRect 有什么影响?

最近遇到和看到的一些面试题。 使用drawRect有什么影响? drawRect方法依赖Core Graphics框架来进行自定义的绘制,但这种方法主要的缺点就是它处理touch事件的方式: 每次按钮被点击后,都会用setNeddsDisplay进行强制重绘;而且不止一次,每次单点事件触发两次执行。这样的话从性能的角度来说,对CPU和内存来说都是欠佳的。特别是如果在我们的界面上有多个这样的UIButton实例。...

iOS 面试题: 对 Runtime 的理解

最近遇到和看到的一些面试题。 为什么其他语言里叫函数调用, Objective-C里则是给对象发消息(或者谈下对Runtime的理解) 先来看看怎么理解发送消息的含义: 曾经觉得Objc特别方便上手,面对着 Cocoa 中大量 API,只知道简单的查文档和调用。还记得初学 Objective-C 时把[receiver message]当成简单的方法调用,而无视了“发送消息”这句话的深刻含义。于是[receiver message]会被编译器转化为: objc_msgSend(receiver, selector) 如果消息含有参数,则为: objc_msgSend(receiver, sel...

Swift : Operator implementation

与 C++ 类似,在 Swift 中也支持操作符的重载和定义,本文主要来介绍一下它的用法。 原有操作符重载 在 Swift 内部已经定义了一些操作符例如 +、-、*、/ 等,但他们能计算的内容很有限,在实际应用中我们可能希望通过对某些复杂的值进行计算操作,这种情况下我们可以通过重载原来的操作符来简化我们的代码。 举个栗子,我们要对两个 CGSize 进行相加,希望其 x 与 y 分别相加并以新的值返回一个 CGSize,如果没有操作符重载,我们会这样实现: let size1 = CGSizeMake(100, 100) let size2 = CGSizeMake(200, 200) let...

iOS Animation : CADisplayLink

我们知道,凡是动画一定会涉及到时间问题,UI 动画也不例外,定时更是一个十分常用的操作。本文主要介绍一种定时器——CADisplayLink的基本使用。 基本描述 简单来说,CADisplayLink 是一个提供了周期性调用 selector 的机制,类似于 NSTimer。和其他 CoreAnimation 类一样,要使用 CADisplayLink 首先也需要引入 QuartzCore.framework 库。 如何启动 let displayLink = CADisplayLink(target: self, selector: "handleDisplayLink:&quot...

iOS Animation : UIBezierPath 基础

贝塞尔曲线是计算机图形学的伟大推动者,它在 iOS 中的应用 UIBezierPath 也是 UI 动画制作中十分常用的工具,本文主要介绍 UIBezierPath 在 iOS 中的基本使用。 贝塞尔原理 从数学角度来说,贝塞尔的原理是,给定 n+1 个数据点 p0(x0 , y0) ... pn(xn , yn) 生成⼀条曲线并使该曲线与给定点所连结的折线相近。 UIBezierPath 在强大的 UIKit 中对 C 语言绘图框架 Core Graphics 做了一些封装,而 UIBezierPath 就是其中之一。 UIBezierPath 的使用非常简单: 创建实例 添加...

iOS Animation : 拖拽气泡的基本算法

通过前面博客的介绍,你应该已经对 UIBezierPath 的基本使用有了了解,接下来,本文主要介绍 UIBezierPath 在 UI 动画中的应用——拖拽气泡的基本算法。 初步构想 首先来分析拖拽气泡的结构: 如上图,气泡初始状态为正圆形,拖拽后,左右两端分别为两个大小不同的正圆,由两条曲线连接,其内部填充为统一的颜色,也就是说我们只需要绘制两个圆弧,两条长曲线,拼接为完整的路径并进行填充即可。 计算公式 有了上面的分析,我们初步构想了气泡的原理,接下来就需要对其中的数值进行精确的计算,得到通用的计算公式。 如图, AE ⊥ AB、BF ⊥ AB,AE = BF = distance ...

iOS/Mac GameDev : SpriteKit

最近抽时间研究了一下 iOS 上主要的一些游戏开发库诸如 SpriteKit、SceneKit、Metal、Unity 及 OpenGL ES,做一个简单的总结。 本文主要介绍 SpriteKit,其他部分在后面的博客中会提到,个人能力有限,有错误请指正。 什么是 SpriteKit 从 iOS 7 开始苹果在 iOS 引入了 SpriteKit,它是一个用来构建 2D 小游戏的 iOS 原生套件。 为什么选择 SpriteKit 要回答这个问题,需要了解 SpriteKit 的优缺点。 优点 提供了 Sprite 与丰富的滤镜、遮罩等特效,甚至还集成了物理库 内置了诸如移动、旋转等许...

iOS : UIWebView 优化之资源文件本地化

为了降低开发和维护成本,很多公司和团队选择了嵌入 Web 页面的方式发布客户端,但一直以来 Web 应用与 Native 应用的在用户体验方面都存在不小的差距,因此如何缩小这种差距就成了一个关键的问题。 通常来说,我们的 Web 应用都拥有许多页面,页面切换也比较频繁,而在页面在加载时,相关的资源诸如 JS、CSS、IMG 等在很多情况下并不会随页面变动,因此我们可以将这部分资源放置在本地,在需要的时候交给页面使用。 资源变动的分析 正如前面所有,不会改变的资源只是所有资源中的一部分,因此我们就需要对资源的变动情况进行分析,以便将不会改变的资源提取出来。 资源拦截的实现 经过了资源变动的分析之...

iOS 9 : Split View

如果你越过狱,或者玩过苏菲,你一定对有过多个 App 同时运行同时显示同时使用的操作,使用 iOS 的小伙伴们最心痛的莫过于多任务,不过这一切都被 iOS 9 终结于此。 关于其他 iOS 9 的特性与功能,有兴趣的朋友可以参考我博客中的 iOS 9 适配系列。 在 iOS 9 中,多任务共有三种表现形式: Slide Over: 临时出现\交互的滑动覆盖 Split View: 分屏多任务,目前 Split View 支持的分屏比例有三个,分别为 1/2、1/3 和 2/3 Picture in Picture: 视频播放画中画 Slide Over 滑动覆盖 在苹果的官...

What's this?

The Night-City version of CaveOps inspired by Cyberpunk 2077. Not finished yet.

Pinned Message

The Founder and CEO of Infeca Technology.

Developer, Designer, Blogger.

Big fan of Apple, Love of colour.

Feel free to contact me.

反曲点科技创始人和首席执行官。

开发、设计与写作皆为所长。

热爱苹果、钟情色彩。

随时恭候 垂询