iOS category内部实现原理
无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Ob…
趣探 Mach-O:加载过程
我们都知道 Mach-O是 OS X 系统的可执行文件,说到可执行文件肯定离不开进程。在 Linux 中,我们会通过 Fork()来新创建子进程,然后执行镜像通过exec()来替换为另一个可执行程序,至于为什么这么做,解释如下 综上所述,我们在用户态会通过exec*系列函数来加…
浅析移动蜂窝网络的特点及其省电方案
蜂窝网络的架构类似于我们常见的蜂窝,是由一个个基站组成的蜂窝,理想状态中我们的蜂窝网络应该是下面这个样子的。当然,现实生活中网络资源分布并没有这么的均匀。 Wi-Fi 是一种无限局域网技术,Wi-Fi 信号需要有线网来提供,比如我们家里常用的宽带上网,就是将有线信号转换成 Wi…
趣探 Mach-O:文件格式分析
我们的程序想要跑起来,肯定它的可执行文件格式要被操作系统所理解,比如 ELF 是 Linux下可执行文件的格式,PE32/PE32+是windows的可执行文件的格式,那么对于OS X和iOS 来说 Mach-O 是其可执行文件的格式。 我们平时了解到的可执行文件、库文件、Ds…
如何在三年内快速成长为一名技术专家
工作前三年是职业生涯中成长最快的几年,在这段时间里你会充满激情,做事专注,也容易养成良好的习惯。在我们公司有些同学在前三年中就快速成为某一个领域的技术专家,有些同学也可能止步不前。本文和大家一起探讨下如何在三年内快速成长为一名技术专家。 首先要有空杯的学习心态,而不是傲娇自满,…
iOS 面试宝典
本篇文章总结多年来 iOS 开发人员面试常问到的问题,也希望能够带领刚入门的同志们走入职场。在准备去面试之前,你觉得自己到底有几斤几两呢?看看下面的问题吧!!!
这里是最常见的面试题集锦,包括 BAT 面试题哦!
面试中的那些 Git 问题 – 基础部分
团队协作能力一直是我们招聘开发人员的重要考核指标之一。而考核这个能力的原因很简单:一般公司都不会只有一个开发…而一旦涉及多人协作开发,良好的协作能力和习惯能显著提高整个团队的开发效率。Time is money! 说到协作,面试中当然就会聊到开发人员日常最需要协作的事情,代码协…
趣探 Mach-O:FishHook 解析
对于动态链接库里面的C函数,第一次调用的时候,我们会得到函数和实现地址的对应关系,函数的实现地址存放在一个叫la_symbol_ptr的地方,第二次调用的时候,直接通过la_symbol_ptr找到函数地址就可以,不再需要繁琐的获取函数地址的过程。(具体通过哪些过程,可以参考刚…
如何为一个实例动态替换方法
这个 Tip 来源于一道面试题,感觉很是考察知识变通的能力,对 KVO 深入了解的同学,应该很容易就可以答出来。这里抛砖引玉,简单聊聊这个 Tip 当你观察一个对象时,会动态的创建该对象类的子类,这个子类重写了被观察属性的 setter 方法,同时将该对象的 isa 指针指向了…
各个线程 Autorelease 对象的内存管理
第二个问题,ARC 下什么样的对象由 Autoreleasepool 管理呢?大多数人的回答是:“都会由 pool 进行管理”。其实并不是这样的,对于普通的对象是由编译器在合适的地方为我们 Realease 了。针对这个问题,我已经总结过:引用计数带来的一次讨论,是参考了经典的…
如何使用iOS数据保护功能
现代 iOS 设备支持数据保护功能,其负责利用内置加密硬件保护用户数据。在今天的文章中,我们将了解各类应用如何利用这一功能保护自有文件、从各来源处收集细节信息,同时将其与我自己的观察结论加以结合。
iOS 中 HTTPS 证书验证浅析
本文的目的,一是简要分析下对服务器身份验证的完整握手过程,二是证书链的验证,三是探索下iOS中原生库NSURLConnection或NSURLSession如何支持实现https
【译】处理 iOS 中复杂的 Table Views 并保持优雅
Table views 是 iOS 开发中最重要的布局组件之一。通常我们的一些最重要的页面都是 table views:feed 流,设置页,条目列表等。 每个开发复杂的 table view 的 iOS 开发者都知道这样的 table view 会使代码很快就变的很粗糙。这样…
iOS面试技巧及问题最全梳理,让BAT的Offer不再难拿!
目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,随着各大公司秋招的开始,很多小伙伴都行动起来了,我也有幸获得了一份不错的offer并和大家分享自己的经验心得。由于我面试公司比较多,所以自然也是做了这方面…
iOS面试题集合(BAT及各大中小型公司)
本文主要内容为iOS面试题目,对各个面试题进行一些分类(持续更新),包含了BAT,及各大中小型公司的面试题集合,为大家在找工作的时候提供一点帮助…
你真的会用 CocoaPods 吗?
CocoaPods 可以说是 iOS 开发应用最广泛的包管理工具,本篇文章主要介绍 CocoaPods 的第三方库是怎样从网络集成到我们本地的项目当中,也是制作私有库、开源库和 iOS 项目组件化的一个知识铺垫。 其中 git 字段表示该框架的托管地址,也就是上面时序图中的 远…
你敢在post和get上刁难我,就别怪我装逼了
之前好几次面试都被问到post和get有什么区别,肯定很多同学和我一样说了一大堆什么post比get安全,get比post传的少乱起八糟这样的答案,但是面试官就还是不停的问你,还有呢还有呢?当时我就火了还有啥?回来之后上网搜来来回回就那么几个答案,今天被我找到了正确的答案,今天…
聊聊ALAssetsLibrary 与 Photos
ALAssetsLibrary和Photos都是Apple提供访问系统相册资源的两个标准库,前者在iOS9之后已经被弃用,后者在iOS8上开始支持。可想而知,Photos库提供了更全面更友好的接口。 本文通过对比两者的用法来系统地学习一下“iOS访问系统相册资源”的知识点。重点…
[[iOS] 谈谈iOS多线程的锁](https://juejin.im/entry/5a0a9…
iOS开发中由于各种第三方库的高度封装,对锁的使用很少,刚好之前面试中被问到的关于并发编程锁的问题,都是一知半解,于是决定整理一下关于iOS中锁的知识,为大家查缺补漏。 在过去几十年并发研究领域的出版物中,锁总是扮演着坏人的角色,锁背负的指控包括引起死锁、锁封护(luyang注…
iOS 手势识别的工作原理及一个全屏手势的处理
在项目中遇到个问题就是使用AVPlayer播放视频时,如果用系统的手势返回,会出现视频播放卡顿的问题. 为了实现自定义手势返回, 我参考了<<精通iOS框架>>里手势章节介绍的内容. 给大家介绍一下关于手势的一些总结.下面的第一部分主要引用自这本书. 第一个需要理解的概念是手势…