#Hello Edgerunners, welcome to the Night-City.

Welcome!

iOS 面试题: __block

最近遇到和看到的一些面试题。 __block 在 ARC 和非 ARC 下含义一样吗? 在 MRC 中 block variable 在 block 中使用是不會 retain 的, 但是 ARC 中 block 則是會 retain 的,取而代之的是用 weak 或是 unsafe_unretained 來更精確的描述 weak reference 的目的。 其中前者只能在 iOS5 之後可以使用,但是比較好 (該物件 release 之後,此 pointer 會自動設成 nil ) 而後者是 ARC 的環境下為了相容 4.x 的解決方案。 所以上面的範例中 __block MyClass*...

iOS 面试题: assign 与 weak 的区别, block 与 weak 的区别

最近遇到和看到的一些面试题。 请解释 assign 与 weak 的区别, block 与 weak 的区别 assign适用于基本数据类型,weak是适用于NSObject对象,并且是一个弱引用。 assign其实也可以用来修饰对象,那么我们为什么不用它呢?因为被assign修饰的对象在释放之后,指针的地址还是存在的,也就是说指针并没有被置为nil。如果在后续的内存分配中,刚好分到了这块地址,程序就会崩溃掉。而weak修饰的对象在释放之后,指针地址会被置为nil。所以现在一般弱引用就是用weak。 首先__block是用来修饰一个变量,这个变量就可以在block中被修改(参考block实现原...

iOS 面试题: load 和 initialize 方法

最近遇到和看到的一些面试题。 +(void)load;、+(void)initialize; 有什么用处? 在Objective-C中,runtime会自动调用每个类的两个方法。+load会在类初始加载时调用,+initialize会在第一次调用类的类方法或实例方法之前被调用。这两个方法是可选的,且只有在实现了它们时才会被调用。 共同点: 两个方法都只会被调用一次。...

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 ...

What's this?

The Night-City version of Hotodogo 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.

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

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

热爱苹果、钟情色彩。

随时恭候 垂询

Outer Square Inner Square