Foundation"源码"
bestswifter技术加强点
Autolayout
杨潇玉
GCD的工作原理
NSHispter和Objc.io有非常多优秀的文章
Objective-C
名称 | 简介 |
---|---|
深入理解GCD | 深入理解GCD |
如何使用 Runtime 给现有的类添加 weak 属性 | 如何使用 Runtime 给现有的类添加 weak 属性 |
Objective-C Fast Enumeration 的实现原理 | Objective-C Fast Enumeration 的实现原理 |
Why objc_msgSend Must be Written in Assembly | Why objc_msgSend Must be Written in Assembly |
Objective-C 消息发送与转发机制原理 | Objective-C 消息发送与转发机制原理 |
CATEGORIES CONSIDERED HARMFUL | 关于我们该如何正确使用OC中的Category。 |
深入理解Objective-C:Category | 来自美团技术团队的优质技术文章,深入讲解了Category |
深入理解Objective-C:方法缓存 | 来自美团技术团队的优质技术文章, 深入讲解了OC中方法调用缓存的相关知识。 |
Objective-C 的现代语法和新特性 | Objective-C 的现代语法和新特性 |
Adopting Nullability Annotations | OC新特性,标记对象是否可以为空,为了更好的适配Swift。 |
Adopting Objective-C Generics | OC新特性,标记集合对象(NSArray, NSDictionary, NSSet)中保存对象类型,为了更好的适配Swift。 |
Objective-C vs Swift messages dispatch | Objective-C和Swift的消息派发机制 |
高效开发iOS系列 -- 那些不为人知的KVC | 文章主要讲解了KVC中容易被开发者忽视却很有用的用法。 |
Apple Memory Usage Performance Guidelines | 是上面内存管理及优化视频中提到的苹果文档。 |
iOS内存管理和malloc源码解读 | iOS内存管理和malloc源码解读 |
Automatically Formatting Your Objective-C | 自动格式化代码工具ClangFormat-Xcode使用。 |
How to C in 2016 | How to C in 2016 |
//TODO | |
Objective-C Runtime Note | |
position与anchorPoint |
技术实践
文章名称 | 简介 |
---|---|
移动端图片格式调研: ibireme | 在做YYImage时的调研成果 |
iOS 处理图片的一些小 Tip: ibireme | 在做YYImage时的调研成果 |
To speed up the XCode compile and link speed (200%+) | 如何加快XCode编译速度? |
//TODO | |
iOS 10 Link Preview API in WKWebView | |
iOS 10 UserNotifications 框架解析 | |
SQLite3性能深入分析 | |
揭秘:微信是如何用libco支撑8亿用户的 |
UI
文章名称 | 简介 |
---|---|
清理ios项目不用的图片资源 | 清理ios项目不用的图片资源 |
基于 UIWebView 的富文本编辑器实践 | 基于 UIWebView 的富文本编辑器实践 |
AutoLayout--优化UITableViewCell高度计算的那些事 | 使用AutoLayout动态计算UITableViewCell高度 |
AutoLayout Tips | Tip1.两个不等宽的View,彼此相邻,并“共同”居中于 Superview Tip2.让 AutoLayout 与 UIScrollView 合作无间 |
『零行代码』解决键盘遮挡问题(iOS) | 『零行代码』解决键盘遮挡问题(iOS) |
几句代码快速集成自定义转场效果+ 全手势驱动 | 几句代码快速集成自定义转场效果+ 全手势驱动 |
[译]字体渲染背后不得不说的故事 | [译]字体渲染背后不得不说的故事 |
iOS 二维码扫描(你想要的都在这里了) | iOS 二维码扫描(你想要的都在这里了) |
Building a Simple Barcode Reader App in Swift | Building a Simple Barcode Reader App in Swift |
Quartz2D 编程指南 | Quartz2D 编程指南 |
iOS中使用blend改变图片颜色 | iOS中使用blend改变图片颜色 |
iOS 处理图片的一些小 Tip | iOS 处理图片的一些小 Tip |
移动端图片格式调研 | 移动端图片格式调研 |
iOS开发之如何跳到系统设置里的各种设置界面 | iOS开发之如何跳到系统设置里的各种设置界面 |
防止点击 Cell 时 ViewController 被重复 Push | 寻找疑难问题的解决办法,再做合理分析以便确定可使用 |
iOS 开发之照片框架详解 | 包括AssetsLibrary及新库photoKit(官方demo) |
利用UIWebView打造一个炫酷的视频背景视图(OC & Swift) | 视频背景View, 适合做Hi 5.0的登录窗口。 |
Elastic view animation using UIBezierPath | Elastic view animation using UIBezierPath |
Using multiple UIWindows in iOS applications | Using multiple UIWindows in iOS applications |
UIWindow in iOS | UIWindow in iOS |
React-Inspired Views | User interfaces can be hard to get right in any application. Combining display and interaction in a little rectangle on the user’s screen seems simple, but even for small applications, it’s easy to end up with a tangled mess of view code. In complex products with many contributing engineers, like Facebook’s News Feed, these views can be especially hard to develop and maintain over time. Facebook News Feed视图策略 |
动画
文章名称 | 简介 |
---|---|
How To Create an Uber Splash Screen | How To Create an Uber Splash Screen |
Controlling Animation Timing | Controlling Animation Timing |
QQ中未读气泡拖拽消失的实现分析 | 这位博主的其他文章也非常赞~ |
看,这白白的液体滴了一地 | 液态效果动画 |
利用贝塞尔曲线实现Q弹的下拉刷新 | 利用贝塞尔曲线实现Q弹的下拉刷新 |
iOS开发系列--让你的应用“动”起来 | 讲解IOS 动画相关 |
iOS自定义转场动画实战讲解 | iOS自定义转场动画实战讲解 |
CALayer Animation实践(一):让应用灵动起来! | CALayer 动画实践(一) |
CALayer动画实践(二):CAReplicatorLayer的用法 | CALayer 动画实践(二) |
iOS 视图控制器转场详解 | 非常详尽讲解转场。 |
文字排版
文章名称 | 简介 |
---|---|
介绍text kit很棒的一篇文章 | 介绍text kit很棒的一篇文章 |
布局
文章名称 | 简介 |
---|---|
10 Things You Need to Know About Cocoa Auto Layout | 10 Things You Need to Know About Cocoa Auto Layout |
iOS Auto Layout: Fun Facts and Tips | iOS Auto Layout: Fun Facts and Tips |
单测
文章名称 | 简介 |
---|---|
Asynchronous Testing | Asynchronous Testing |
单元测试框架选型 | 介绍单元测试框架选型,对比几个知名测试框架 |
OCMock常见使用方式 | 介绍CMock常见使用方式 |
Singleton如何测试 | 介绍Singleton如何测试 |
单元测试编码规范 | 介绍单元测试编码规范 |
How to write a unit test which passes if a function throws? | 目前Xcode Unit Test没有对抛出异常的函数进行处理的XCT方法,文中添加了第三方的写法。 |
如何进行 HTTP Mock | HTTP Mock 在测试中非常好用,我们可以在不需要后端 API 的情况下,在本地对 HTTP 请求进行拦截,返回想要的 json 数据,而 OHHTTPStubs 就为我们提供了这样一种解决方案。 |
Test Doubles: Mocks, Stubs, and More | |
Dependency Injection | |
//TODO | |
Bad Testing Practices |
Model层:
- 数据持久化存储方案有哪些?
- 沙盒的目录结构是怎样的?各自一般用于什么场合?
- SQL语句问题:inner join、left join、right join的区别是什么?
- sqlite的优化
- 网络通信用过哪些方式
- 如何处理多个网络请求并发的情况
- 在网络请求中如何提高性能
- 在网络请求中如何保证安全性
语言与基础知识:
- 内存中的栈和堆的区别是什么?哪些数据在栈上,哪些在堆上?
- const和#define定义的变量,有什么区别
- 什么情况下会出现内存的循环引用,block中的weak self,是任何时候都需要加的么?
- GCD的queue,main queue中执行的代码,一定是在main thread么?
- NSOperationQueue有哪些使用方式
- NSThread中的Runloop的作用,如何使用?
- .h文件中的变量,外部可以直接访问么?(注意是变量,不是property)
- 讲述一下runtime的概念,message send如果寻找不到相应的对象,会如何进行后续处理 ?
- TCP和UDP的区别是什么?
- MD5和Base64的区别是什么,各自场景是什么?
- 二叉搜索树的概念,时间复杂度多少?
架构:
- 哪些类不适合使用单例模式?即使他们在周期中只会出现一次。
- Notification的使用场景是什么?同步还是异步?
- 简单介绍一下KVC和KVO,他们都可以应用在哪些场景?
APP相关:
- 如何添加一个自定义字体到工程中
- 如何制作一个静态库/动态库,他们的区别是什么?
- Configuration中,debug和release的区别是什么?
- 简单介绍下发送系统消息的机制(APNS)
UI:
- 系统如何寻找到需要响应用户操作的那个Responder
- 多屏幕尺寸的适配
- UIButton的父类是什么?UILabel呢?
- push view controller 和 present view controller的区别
- 描述下tableview cell的重用机制
- UIView的frame和bounds的区别是什么
场景题:
- 发送10个网络请求,然后再接收到所有回应之后执行后续操作,如何实现?
- 实现一个第三方控件,可以在任何时候出现在APP界面最上层
- 实现一个最简单的点击拖拽功能。上面那个拖拽之外,如果在手放开时,需要根据速度往前滑动呢?
- 如何减小一个应用程序的尺寸?
- 如何提高一个性用程序的性能?
- 不同版本的APP,数据库结构变化了,如何处理?
该部分转自:张之诚,在此表示衷心的感谢!希望程序员都能有一份稳定的工作
基础问题
1、使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?
2、用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
3、UIView和 CALayer是什么关系?
4、static有什么作用
5、Category(类别)、 Extension(扩展)和继承的区别
6、为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
7、id和NSObject*的区别
8、如何令自己所写的对象具有拷贝功能?
设计模式
1、除了单例,观察者设计模式以外,还知道哪些设计模式?分别介绍一下
2、最喜欢哪个设计模式?为什么?
3、iOS SDK 里面有哪些设计模式的实践?
4、设计模式是为了解决什么问题的?
5、设计模式的成员构成以及工作机制是什么?
6、设计模式的优缺点是什么?
架构设计
7、MVC和MVVM的区别?MVVM和MVP的区别?
8、面向对象的几个设计原则了解么?最好可以结合场景来说。
9、可以说几个重构的技巧么?你觉得重构适合什么时候来做?
10、你觉得框架和设计模式的区别是什么?
11、看过哪些第三方框架的源码,它们是怎么设计的?设计好的地方在哪里,不好的地方在哪里,如何改进?
底层
16、main()之前的过程有哪些?
17、KVO基本原理?
18、Swift 下的如何使用 KVC?
19、:Swift有哪些模式匹配?
20、objc在向一个对象发送消息时,发生了什么?
21、静态库的原理是什么?你有没有自己写过静态编译库,遇到了哪些问题?
22、runloop是来做什么的?runloop和线程有什么关系?主线程默认开启了runloop么?子线程呢?
23、App 网络层有哪些优化策略?
24、TCP为什么要三次握手,四次挥手?
25、对称加密和非对称加密的区别?分别有哪些算法的实现?
26、HTTPS的握手流程?为什么密钥的传递需要使用非对称加密?双向认证了解么?
27、HTTPS是如何实现验证身份和验证完整性的?
28、如何用Charles抓HTTPS的包?其中原理和流程是什么?
29、什么是中间人攻击?如何避免?
网络
30、HTTP协议详解
31、谈谈你对HTTP 、TCP、 IP、socket 协议的理解
测试
32、单元测试那些事!
33、为什么使用这个单元测试呢?它给我们带来了什么好处呢?
34、单元测试的重要性:
swift
35、swift闭包
36、swift中高阶函数map用法
线程
37、 不要阻塞主线程
38、谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?
39、进程和线程的区别?同步异步的区别?并行和并发的区别?
40、ViewController生命周期
41、iOS 中的多线程
42、内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象
需要手动释放?在和property结合的时候怎样有效的避免内存泄露?谁申请,谁释放
43、dispatch_barrier_async的作用是什么?
44、如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)
http
46、http与https的区别?
47、服务器能否知道APNS推送后有没有到达客户端的方法?
app
48、1.什么方式可以看到上架App的头文件?
47、阅读过哪些框架的源码?能说说它的架构方式吗
49、iOS iAP内购审核可能失败的问题
50、IAP内购中虚拟货币导致审核无法通过的问题?
高级进阶
1.KVO实现原理?
2.说说你理解的埋点?
3.消息转发机制原理?
4.说说你理解weak属性?
5.假如Controller太臃肿,如何优化?
6.项目中网络层如何做安全处理?
7.main()之前的过程有哪些?
该部分转自 胖虎_callmeV,自我训练用。