#Hello Edgerunners, welcome to the Night-City.

Welcome!

iOS 面试题: GET 和 POST 有什么区别

最近遇到和看到的一些面试题。 http的post和get啥区别? GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如: login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。POST把提交的数据则放置在是HT...

iOS 面试题: Method Swizzling

最近遇到和看到的一些面试题。 什么是 Method Swizzling? Method Swizzling 原理: 在Objective-C中调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是selector的名字。利用Objective-C的动态特性,可以实现在运行时偷换selector对应的方法实现,达到给方法挂钩的目的。 每个类都有一个方法列表,存放着selector的名字和方法实现的映射关系。IMP有点类似函数指针,指向具体的Method实现。 我们可以利用 method_exchangeImplementations 来交换2个方法中的IMP,我们可以利用 class_r...

iOS 面试题: Retain Cycle

最近遇到和看到的一些面试题。 描述一个你遇到过的 Retain Cycle 例子。 block中的循环引用: 一个viewController @property (nonatomic,strong)HttpRequestHandler * handler; @property (nonatomic,strong)NSData *data; _handler = [httpRequestHandler sharedManager]; [_handler downloadData:^(id responseData){ _data = responseData; ...

iOS 面试题: UIImageView 圆角

最近遇到和看到的一些面试题。 如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!) 可以使用Quartz2D直接绘制图片。 创建目标大小(cropWidth,cropHeight)的画布。 使用UIImage的drawInRect方法进行绘制的时候,指定rect为(-x,-y,width,height)。 从画布中得到裁剪后的图像。 + (UIImage)cropImageWithRect:(CGRect)cropRect { CGRect drawRect = CGRectMake(-cropRect.origin.x , -cropRe...

iOS 面试题: UIView 和 CALayer

最近遇到和看到的一些面试题。 UIView 和 CALayer 是啥关系? UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它。它本身完全是由CoreAnimation来实现的 (Mac下似乎不是这样)。它真正的绘图部分,是由一个叫CALayer(Core Animation Layer)的类来管理。 UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等 等,实际上内部都是在访问它所包含的CALayer的相关属性。 UIView有个layer属性,可以返回它的主CALayer实例,UIView有一个layerCla...

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实例。...

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