转载

百度Hi团队 iOS 技术周报

iOS技术周报分类

周报博客地址: 点我

Swift

名称 简介
Rejected Swift Proposals What we can learn from the rejections
OOD Principles In Swift OOD Principles In Swift
A Different Take on MVVM with Swift A Different Take on MVVM with Swift
Avoiding the overuse of @objc in Swift Avoiding the overuse of @objc in Swift
Swift: Selector syntax sugar 《Swift:Selector 语法糖》,今天要发的这篇来头很大,Chris Lattner 亲自转发过,就冲这个也必须读一读了。
quiz about properties in swift 关于swift 属性相关的小测验
exploring swift array implementation swift Array源码解析,建议配合源码一起看一遍。
swift mutability for foundation swift 未来可能替换NSFoundation中的class为value type.
Design Patterns implemented in Swift 各种常用设计模式在Swift 2的实现。
Swift Name Mangling swift中 __TFCCC4test1a1b1c1dfS2_FTS0_1xS1_1vFT1xSi_Si_OVS_1e1f这是什么,看不懂啊? 读读这篇文章...
Swift 性能探索和优化分析 Swift 性能探索和优化分析
Swift 2 throws 全解析 - 从原理到实践 Swift 2 throws 全解析 - 从原理到实践
Pattern matching part 1: switch, enums & where clauses Pattern matching part 1: switch, enums & where clauses
Pattern Matching, Part 2: tuples, ranges & types Pattern Matching, Part 2: tuples, ranges & types
What's new in Swift 2.2 What's new in Swift 2.2
mvvm in swift mvvm in swift
Being lazy 文章讲解了如何在Swift使用惰性初始化一个实例变量,数组的LazySequence。以及一种思考习惯,能否某些耗时初始化或者计算在用到的时候再去初始化或者计算。
Swift 烧脑体操(一) - Optional 的嵌套 Swift 烧脑体操(一) - Optional 的嵌套
Swift 烧脑体操(二) - 函数的参数 Swift 烧脑体操(二) - 函数的参数
Swift 烧脑体操(三) - 高阶函数 Swift 烧脑体操(三) - 高阶函数
Swift 烧脑体操(四) - map 和 flatMap Swift 烧脑体操(四) - map 和 flatMap
Swift烧脑体操五 - Monad Swift烧脑体操五 - Monad
Swift 烧脑体操(六)- 类型推断 Swift 烧脑体操(六)- 类型推断
the power of map and flatmap map和flatMap的实际使用场景。
swift函数柯里化介绍及使用场景 函数柯里化是函数式编程里的一个重要概念。swift中的柯里化可能很多人都没有了解过,今天给大家介绍一下柯里化的概念和一些使用场景。
如何处理 Swift 中的异步错误 如何处理 Swift 中的异步错误
Swift 2.0: Understanding flatMap Swift 2.0: Understanding flatMap
静态类型的 NSUserDefaults 静态类型的 NSUserDefaults
swift api transformation Swift去掉API中的NS等一些更swift的变化。
swift internals This site hosts internal documentation for the Swift compiler and standard library, as well as the development version of the Swift API Guidelines.
纯Swift2.0工程CocoaChina+从0到1遇到的坑和解决方案 纯Swift2.0工程CocoaChina+从0到1遇到的坑和解决方案
Advanced & Practical Enum usage in Swift Swift中Enum的使用实践
What's New in Swift 2.0 WWDC 2015 关于Swift 2.0 新特性的介绍Session, 可以通过此视频快速了解Swift 2.0的主要变化。
@UIApplicationMain 最近学Swift,新建项目以后发现找不到以前的main函数了。就查了一下怎么回事,详见此文。
The Swift Programming Language Swift 官方文档中文翻译。
Thinking in Swift, Part 1: Saving ponies 这篇文章对比oc和Swift, 来帮助读者更快适应Swift的思考方式。
Thinking in Swift, Part 2: map those arrays 这篇文章对比oc和Swift, 来帮助读者更快适应Swift的思考方式。
Enums as constants 本文介绍了很多Swift中enum的使用场景,很值得学习。
Swift 模式识别详解 详细解读如何使用Swift的模式识别
Swift 2.0 如何写单例 Swift 2.0 单例写法
Controlling Complexity in Swift 使用Swift的Value type来控制程序的复杂度
An Observable Pattern Implementation in Swift Swift的观察者模式实现
When to Use Swift Structs and Classes Swift中何时使用Structs和Classes
Optional Computed Properties in Swift Protocols 声明Optional Computed properties
Protocol Oriented Programming in the Real World Swift Protocol Oriented Programming的使用例子。
Swift Functors, Applicatives, and Monads in Pictures 学了点 haskell ,在 swift 中新加的很多语言特性都是从 haskell 那里“抄”来的,比如强大的枚举、 switch 等等。 functorapplicativemonads 历来是 haskell 学习中相对比较难理解的概念,这篇文章用 swift 简明易懂的做了解释。
Advanced NSOperations 对于使用NSOperation提供了一个新颖的使用方案,比较开拓思路,此seesion有 sample code 结合观看效果更加
Inside Swift Swift的内部机制

Swift 3

名称 简介
Raywenderlich what's new swift 3 Raywenderlich what's new swift 3
Increased Safety in Swift 3.0 Increased Safety in Swift 3.0
Migrating to Swift 2.3 or Swift 3 from Swift 2.2 swift官方迁移指南
Chris Lattner谈Swift 3和Cocoa“重命名” 近日,在“swift-evolution”邮件列表中,Swift创建者Chris Lattner在一篇博文中概述了Swift 3定义的一些指导原则,并明确表示该版本会带来破坏性修改。

Swift Style Guide

名称 简介
Swift API Design Guidelines Swift API Design Guidelines
raywenderlich swift style guide raywenderlich的swift编码规范,及swift2.2 更新说明
linkedin swift style guide LinkedIn's Official Swift Style Guide

Protocol Oriented Programming in Swift

名称 简介
Protocol-Oriented Programming in Swift Protocol-Oriented Programming in Swift
Protocol-Oriented Logging, or: Default Arguments in Swift Protocols POP一个使用例子
iOS Cell Registration & Reusing with Swift Protocol Extensions and Generics POP 在cell中的应用。
Practical Protocol-Oriented-Programming POP的几个应用实例。
Protocols with Associated Types Protocols with Associated Types
Beyond Crusty: Real-World Protocols Beyond Crusty: Real-World Protocols
Blending Cultures: The Best of Functional, Protocol-Oriented, and Object-Oriented Programming Blending Cultures: The Best of Functional, Protocol-Oriented, and Object-Oriented Programming
用 Swift 编写面向协议的网络请求 用 Swift 编写面向协议的网络请求
用 Swift 编写面向协议的视图 用 Swift 编写面向协议的视图
Dim the lights on those view controllers with protocol extensions Dim the lights on those view controllers with protocol extensions
protocol oriented problems and immutable self error protocol oriented problems and immutable self error
使用UIKit进行面向协议的编程 揭开『面向协议编程』真正的面纱。尤其是针对日常 UI 的开发,大部分实例代码并没有切合实际的使用场景,也没有利用任何框架。
Introduction to Protocol-Oriented MVVM 介绍Protocol Oriented 结合MVVM的一个活生生的 :chestnut:
Blurable Apply a Gaussian Blur to any UIView with Swift Protocol Extensions

Objective-C

名称 简介
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的消息派发机制

技术实践

文章名称 简介
制作一个苦力 由JSON文件生成对应的数据Model对象struct, class.
『零行代码』解决键盘遮挡问题(iOS) 『零行代码』解决键盘遮挡问题(iOS)
几句代码快速集成自定义转场效果+ 全手势驱动 几句代码快速集成自定义转场效果+ 全手势驱动
iOS程序main函数之前发生了什么 iOS程序main函数之前发生了什么
Friday Q&A 2012-11-09: dyld: Dynamic Linking On OS X Friday Q&A 2012-11-09: dyld: Dynamic Linking On OS X
MVVMFramework-Swift (Swift版)总结整理下一个快速开发框架,以更优雅的方式写代码,做一个代码艺术家。分离控制器中的代码,已加入cell自适应高度,自动缓存网络请求代码,降低代码耦合,提高开发效率。其中还有很多相关资源的链接。
[译]字体渲染背后不得不说的故事 [译]字体渲染背后不得不说的故事
UITableView Tips UITableView Tips
微信读书 iOS 性能优化总结 微信读书 iOS 性能优化总结
简单监测iOS卡顿的demo 简单监测iOS卡顿的demo
常见操作性能对比 常见操作性能对比
IPv6 socket编程 IPv6 socket编程
iOS应用支持IPV6,就那点事儿 iOS应用支持IPV6,就那点事儿
iOS 二维码扫描(你想要的都在这里了) iOS 二维码扫描(你想要的都在这里了)
Building a Simple Barcode Reader App in Swift Building a Simple Barcode Reader App in Swift
swift markdown 用markdown写Xcode文档
Clang Attributes 黑魔法小记 Clang Attributes 黑魔法小记
Quartz2D 编程指南 Quartz2D 编程指南
iOS开发--应用设置及用户默认设置 iOS开发--应用设置及用户默认设置
secrets of mobile network performance secrets of mobile network performance
基于TLS1.3的微信安全通信协议mmtls介绍 基于TLS1.3的微信安全通信协议mmtls介绍
iOS中使用blend改变图片颜色 iOS中使用blend改变图片颜色
iOS 开发——你真的会用 SDWebImage? SDWebImage源码解析
How to write a unit test which passes if a function throws? 目前Xcode Unit Test没有对抛出异常的函数进行处理的XCT方法,文中添加了第三方的写法。
iOS瘦身之删除无用的mach-O文件 iOS瘦身之删除无用的mach-O文件
Building and managing iOS model objects with Remodel Building and managing iOS model objects with Remodel
教你使用Xtrace读懂Mantle源码 上周周报刚刚整理了Xtrace这个开源库,这篇文章是结合该开源库去阅读源码。
微信文件微起底 微信文件微起底
Injection for Xcode:成吨的提高开发效率 Injection for Xcode:成吨的提高开发效率
读 Threading Programming Guide 笔记 一 二 三 四
如何防止客户端被破解 很多应用都需要用户登录或者签名认证,这可能需要在客户端保存登录信息、签名密钥、加密算法等。如何保证这些重要信息不被窃取,算法不被破解,这些成为应用开发中很重要的内容,同样也是最容易忽视的地方。一个小小的细节可能就成为整个系统的突破口,这里从实际工程角度总结了一些容易忽视的细节和常用的方法。
Square对iOS App架构的新尝试---Ziggurat Square对iOS App架构的新尝试---Ziggurat
UITableView性能优化 UITableView性能优化
Parse的底层多线程处理思路:GCD高级用法 Parse的底层多线程处理思路:GCD高级用法
利用贝塞尔曲线实现Q弹的下拉刷新 利用贝塞尔曲线实现Q弹的下拉刷新
看,这白白的液体滴了一地 液态效果动画
What the 55 Swift Standard Library Protocols Taught Me 作者为raywenderlich长期教程作者,主要介绍了其从Swift标准库提供的protocol学到了哪些,推荐观看,需翻墙。
iOS开发之如何跳到系统设置里的各种设置界面 iOS开发之如何跳到系统设置里的各种设置界面
AFNetworking 3.0迁移指南 为了迎合iOS新版本的升级,AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持。如果你的项目以前使用过这些API,建议您立即升级到基于NSURLSession的API的AFNetworking的版本。
iOS开发系列--让你的应用“动”起来 讲解IOS 动画相关~博主的文笔和排版灰常赞~其系列博文值得一读
优化Facebook iOS app启动时间 优化Facebook iOS app启动时间
Lessons learned with 3D Touch 详细介绍了3D touch 在instagram app中的应用。
iOS 保持界面流畅的技巧 iOS 保持界面流畅的技巧
AFNetworking2.0源码解析<一> AFNetworking2.0源码解析<一>
AFNetworking2.0源码解析<二> AFNetworking2.0源码解析<二>
AFNetworking2.0源码解析<三> AFNetworking2.0源码解析<三>
iOS 处理图片的一些小 Tip iOS 处理图片的一些小 Tip
移动端图片格式调研 移动端图片格式调研
iOS APP安全杂谈之三 iOS APP安全杂谈之三
iOS高性能图片架构与设计 iOS高性能图片架构与设计
单元测试框架选型 介绍单元测试框架选型,对比几个知名测试框架
OCMock常见使用方式 介绍CMock常见使用方式
Singleton如何测试 介绍Singleton如何测试
单元测试编码规范 介绍单元测试编码规范
Reducing FOOMs in the Facebook iOS app 这篇文章介绍了Facebook如何减少由于系统内存压力导致的应用Crash。为追踪非应用本身Bug 造成的crash提供了一个思路。
Faster Photos in Facebook for iOS 这篇文章介绍了Facebook使用Progressive JPEG加快图片加载的优缺点对比。附上一个Progressive image的开源库
On Using SQLite and FMDB Instead of Core Data 关于使用Sqlite的一些实践,对我们项目里Sqlite的使用有很多可以借鉴的东西。

应用架构相关

文章名称 简介
新浪微博iOS客户端架构与优化之路 新浪微博iOS客户端架构与优化之路
Advanced iOS Application Architecture and Patterns Explore a selection of high-level software engineering techniques presented in the context of Cocoa Touch. Learn how to manage complexity in large codebases by clearly defining where truth resides, by controlling state with Swift's powerful value types and immutability, and by thinking in terms of composition.
iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译) iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)
iOS组件化方案探索 JSPatch作者关于组件化方案探索的文章。
猿题库iOS客户端架构设计 这篇文章将阐明我们在猿题库 iOS 客户端的架构设计。
跳出面向对象思想(一) 继承 跳出面向对象思想(一) 继承
跳出面向对象思想(二) 多态 跳出面向对象思想(二) 多态
跳出面向对象思想(三) 封装 跳出面向对象思想(三) 封装
iOS应用架构谈 开篇 iOS应用架构谈 开篇
iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 view层的组织和调用方案
iOS应用架构谈 网络层设计方案 iOS应用架构谈 网络层设计方案
iOS应用架构谈 本地持久化方案及动态部署 iOS应用架构谈 本地持久化方案及动态部署
Software Architecture Patterns pdf Software Architecture Patterns
构建iOS稳定应用架构时方案选择的思考 构建iOS稳定应用架构时方案选择的思考

开源代码

UI

名称 推荐理由
LayoutKit LayoutKit is a fast view layout library for iOS. http://layoutkit.org
fantastic-ios-animation A collection of iOS animation repos
Scrollable-GraphView An adaptive scrollable graph view for iOS to visualise simple discrete datasets. Written in Swift.
Render React-inspired Swift library for writing UIKit UIs.
PMAlertController PMAlertController is a great and customizable substitute to UIAlertController
JPFPSStatus Show FPS Status on StatusBar
15DaysofAnimationsinSwift 动画相关,不是15天从入门到放弃。
TextAttributes TextAttributes makes it easy to compose attributed strings.
SubtleVolume Replace the system volume popup with a more subtle indicator.
Advance A powerful animation framework for iOS.
FLAnimatedImage FLAnimatedImage is a performant animated GIF engine for iOS
LazyTableImages: Populating UITableView content asynchronously 苹果官方出了个demo,LazyTableImages,对列表里图片很多的情况有很好的优化作用。我看了一下,挺实用的。
IBAnimatable Design and prototype UI, interaction, navigation, transition and animation for App Store ready Apps in Interface Builder with IBAnimatable.
RACollectionViewReorderableTripletLayout UICollectionView 排序
Rainbow Rainbow adds text color, background color and style for console and command line output in Swift. It is born for cross platform software logging in terminals, working in both Apple's platforms and Linux. Meanwhile, it is also compatible with XcodeColors, which lets you colorize the Xcode debugger output as well when developing an app.
SlackTextViewController A drop-in UIViewController subclass with a growing text input view and other useful messaging features.
REVERT Reveal出品,一个项目教会你Swift的基本UI开发。配合reveal更加直观。
SwiftGen This is a suite of tools written in Swift 2 to auto-generate Swift 2 code for various assets of your project: 1.enums for your Assets Catalogs 2.enums for your Localizable.strings strings.3.enums for your UIStoryboard and their Scenes. 4.enums for your UIColors.
Instructions 新手引导
FDStackView Use UIStackView directly in iOS6+ ,百度知道团队开源代码
Concorde Progressive JPEG 图片加载的三方库。
MessageDisplayKit MessageDisplayKit 模仿微信样式的开源IM
JSQMessagesViewController 开源聊天界面组件
ClassyLiveLayout Use Classy stylesheets together with Masonry to tweak AutoLayout constants live when debugging in the simulator.
SnapKit SnapKit is a DSL to make Auto Layout easy on both iOS and OS X.
Neon A powerful Swift programmatic UI layout framework.Build dynamic and beautiful user interfaces like a boss, with Swift.

网络

名称 推荐理由
SwiftyOAuth A simple OAuth library for iOS with a built-in set of providers
Moya Network abstraction layer written in Swift.
Reachability.swift Replacement for Apple's Reachability re-written in Swift with closures.

Model

名称 推荐理由
Alamofire Object Mapper An Alamofire extension which converts JSON response data into swift objects using ObjectMapper
Coolie Coolie parse a JSON file to generate models (& their constructors).
Cache A generic caching library for Swift. Cache depends on Foundation.
JASON Fast JSON parsing for Swift
FCModel 依据 On Using SQLite and FMDB Instead of Core Data 做了实现。
Decodable Swift 解析JSON, Chris Lattner(LLVM 作者) 推荐

语法糖

名称 推荐理由
Then :sparkles: Super sweet syntactic sugar for Swift initializers.
SwiftString A comprehensive, lightweight string extension for Swift
Every.swift A swift wrapper for NSTimer
PMKVObserver A type-safe Swift/ObjC KVO wrapper.
Aspects 再也不用自己写丑陋的 method swizzling 代码了。
PromiseKit Modern development is highly asynchronous: isn’t it about time we had tools that made programming asynchronously powerful, easy and delightful?
Async Syntactic sugar in Swift for asynchronous dispatches in Grand Central Dispatch

工具库

名称 推荐理由
iOS App Hook 专注于非越狱环境下iOS应用逆向研究,从dylib注入,应用重签名到App Hook.
AppDevKit AppDevKit is an iOS development library that provides foundational and developer everyday required features for their iOS app development. https://yahoo.github.io/AppDevKit
routable-ios Routable, an in-app native URL router, for iOS
JLRoutes URL routing library for iOS with a simple block-based API.
HHRouter Yet another URL Router for iOS.
MGJRouter 一个高效/灵活的 iOS URL Router
SwiftNotificationCenter A Protocol-Oriented NotificationCenter which is type safe, thread safe and with memory safety
Xtrace Trace Objective-C method calls by class or instance
FBNotifications Facebook Analytics In-App Notifications Framework
GPUImage2 GPUImage 2 is a BSD-licensed Swift framework for GPU-accelerated video and image processing. Redesigned in swift.
FBRetainCycleDetector iOS library to help detecting retain cycles in runtime.
FBAllocationTracker iOS library that helps tracking all allocated Objective-C objects.
FBMemoryProfiler iOS tool that helps with profiling iOS Memory usage. 原理介绍
EarlGrey EarlGrey is a native iOS UI automation test framework that enables you to write clear, concise tests. 一篇EarlGrey的介绍 文章
infer A static analyzer for Java, C and Objective-C http://fbinfer.com/
Localize-Swift 一款开发者不可或缺的国际化及本地化字符串框架支持类库。同样地,使用简单、直观又方便。毫无疑问,这款非常值得收录。
Swiftbeaver Swift 记log工具 和一篇介绍 文章
PhoneNumberKit Swift framework for parsing, formatting and validating international phone numbers. Inspired by Google's libphonenumber.

完整工程

名称 推荐理由
BeautifyFaceDemo It's a simple demo of realtime face beautification based on GPUImage
TSWeChat A high copy WeChat, Written by Swift.
Swift高仿“简书” Swift高仿“简书”
Yep 整套纯Swift开发应用
Awesome Swift Playgrounds 各种供你娱乐的playground
furni-ios furni-ios 是由 Twitter 开发团队出品的一款用 Swift 写的 iOS 家居商城应用, 其主要目的在于让开发者从这款 Demo 应用中看出 Fabric 的强大。
2015开源iOS App总结 十几款开源的app
YYKit YYKit 是一组庞大、功能丰富的 iOS 组件。
Swift Radio Pro 完整的Swift 2.0的App 开源应用。
TeamTalk 蘑菇街开源IM
iOS-9-Sampler Code examples for the new features of iOS 9.

开源库合集

名称 推荐理由
iOS cookies 按类别整理的开源代码合集。
awesome iOS A curated list of awesome iOS ecosystem, including Objective-C and Swift Projects
iOS Source Code Analyze 一些开源代码的解析文章集合。
Swift 开源项目精选 涵盖存储、网络、图片、框架、界面等开源代码
30 days of Swift A self taught project to learn swift.
awesome swift awesome swift 系列,汇聚各种好的swift资源,不收藏等啥呢!
Hacking With Swift Swift 教程,以做小项目学习Swift
swift algorithm club Algorithms and data structures in Swift, with explanations!

文章

标题 内容简介
DNS 原理入门 DNS 原理入门
iOS 视图控制器转场详解 非常详尽讲解转场。
Cocoapods系列教程 一 二 三 从零开始到各种私有管理
Apple Memory Usage Performance Guidelines 是上面内存管理及优化视频中提到的苹果文档。
Swift GYB 简易教程 Swift源码中很多GYB文件,本文简单介绍了如何使用GYB生成代码模板及如何使用GYB生成源码文件。我觉得对于查看Swift源码有帮助。
深入浅出-iOS函数式编程的实现 && 响应式编程概念 本篇主要回顾一下--iOS函数式编程 && 响应式编程概念 ,如何一步步实现函数式编程的过程,对阅读Masonry && SnapKit源码有一定的帮助
iOS自定义转场动画实战讲解 iOS自定义转场动画实战讲解
iOS内存管理和malloc源码解读 iOS内存管理和malloc源码解读
Reader Submissions -- NSHipster 由NSHipster读者提供的一些小技巧。
27 iOS open source libraries to skyrocket your development. 27个常用的iOS开源库。
高效开发iOS系列 -- 那些不为人知的KVC 文章主要讲解了KVC中容易被开发者忽视却很有用的用法。
iOS开发之深入理解GCD 本文为raywenderlich 深入理解GCD的一篇译文,详细讲解了GCD相关的知识。
How to C in 2016 How to C in 2016
不再安全的 OSSpinLock OSSPinLock作为锁已经不再安全了,文章还对比了各种锁的性能对比。
Swift's mysterious Builtin module 揭秘Swift内置模块
Creating your first iOS Framework 手把手教你创建自己的framework
charles中如何对https抓包 使用Charles抓https请求数据包
concurrency apis and pitfalls concurrency apis and pitfalls
Common background practices Common background practices
Low level concurrency apis Low level concurrency apis
Thread safe class design Thread safe class design
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视图策略
防止点击 Cell 时 ViewController 被重复 Push 寻找疑难问题的解决办法,再做合理分析以便确定可使用
Building a Core Foundation Building a Core Foundation
iOS 开发之照片框架详解 包括AssetsLibrary及新库photoKit( 官方demo )
NSFormatter 各种听过没听过,用过没用过的formatter
Swift target acton Cocoa's target/action system for responding to controls is a great system for Objective-C, but is a bit unnatural to use in Swift. Today, I'm going to explore building a wrapper that allows using a Swift function as the action.
objc.io: Compiler In this article we’ll have a look at what a compiler does, and how we can use that to our advantage.
objc.io: mach-o excutables When we build an application in Xcode, part of what happens is that the sources files (.m and .h) get turned into an executable. This executable contains the byte code than will run on the CPU, the ARM processor on the iOS device, or the Intel processor on your Mac. We’ll walk through some of what the compiler does and what’s inside such an executable. There’s more to it than first meets the eye.
iOS开源库介绍-FCModel iOS开源库介绍-FCModel
Delivering high scroll performance Delivering high scroll performance
Bitcode 解密 文章主要介绍了什么是bitcode,以及使用bitcode带来的好处与坏处。
Using multiple UIWindows in iOS applications Using multiple UIWindows in iOS applications
UIWindow in iOS UIWindow in iOS
Swift Weak References Swift 下若引用原理解析。推荐阅读
Open-source Swift: Booleans Booleans -- Swift源码阅读
NSCache NSCache -- Swift源码阅读
iOS同步对象性能对比 iOS同步对象性能对比
深入理解Kingfisher(上) 深入理解Kingfisher(上)
深入理解Kingfisher(下) 深入理解Kingfisher(下)
详说CMDeviceMotion 来自NSHipster 的翻译文章,获取陀螺仪、加速器和磁力仪(罗盘)等传感器数据,get交互灵感
Spelunkhead 跟着博文作者一起探索iOS系统framework。
moby.sh 下载所有framework head文件,并放入一个输出文件夹中,方便搜索查看API接口,新API等。
Facebook开源的Parse源码分析 Facebook开源的Parse源码分析
利用UIWebView打造一个炫酷的视频背景视图(OC & Swift) 视频背景View, 适合做Hi 5.0的登录窗口。
Elastic view animation using UIBezierPath Elastic view animation using UIBezierPath
Automatically Formatting Your Objective-C 自动格式化代码工具ClangFormat-Xcode使用。
CALayer Animation实践(一):让应用灵动起来! CALayer 动画实践(一)
CALayer动画实践(二):CAReplicatorLayer的用法 CALayer 动画实践(二)
代码整洁之所以重要的七个理由 为什么代码整洁是如此重要
技术债务:究竟让你付出了多大代价? 技术债务:究竟让你付出了多大代价?
如何配置一个高效的 Mac 工作环境 如何配置一个高效的 Mac 工作环境
CocoaPods的一些略为高级一丁点的使用 CocoaPods的一些略为高级一丁点的使用
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

React Native

标题 内容简介
React Native Facebook的开源库,使用 React.js 开发原生应用。
Facebook f8 app open source React Native 最佳学习项目来了,Facebook 开源了 F8 App 全套代码,包括 Android,iOS 和 Server 端,其中涉及 React Native, Redux, Relay, GraphQL 等技术,更感人的是配套了教程讲解整个 APP(包括前后端) 是怎么做出来。 教程

Reactive Cocoa & RxSwift & Functional Programming

标题 内容简介
ReactiveCocoa ReactiveCocoa
Brian Beckman: Don't fear the Monad Brian Beckman: Don't fear the Monad
用 ReactiveCocoa 事半功倍的写代码 一 二 三 四
reactive cocoa vs rxswift 两者对比
What the heck is a monad What the heck is a monad
flatmap 介绍flatMap
map 介绍map函数
细说ReactiveCocoa的冷信号与热信号(一) 细说ReactiveCocoa的冷信号与热信号(一)
细说ReactiveCocoa的冷信号与热信号(二):为什么要区分冷热信号 细说ReactiveCocoa的冷信号与热信号(二)
细说ReactiveCocoa的冷信号与热信号(三):怎么处理冷信号与热信号 细说ReactiveCocoa的冷信号与热信号(三)
RACSignal的Subscription深入分析 RACSignal的Subscription深入分析
写给程序猿的范畴论 · 序 写给程序猿的范畴论 · 序
范畴:复合的本质 范畴:复合的本质
类型与函数 类型与函数
范畴,可大可小 范畴,可大可小
Kleisli 范畴 Kleisli 范畴
积与余积 积与余积
对单子的求索 对单子的求索
Swift 2.0: 深入浅出 Map 和 FlatMap 概念 又来一篇Swift和Functional
Enemy of the State 主要是讲程序设计中 state 的坏处,以及用 stateless 编程的好处。这也是近些年来 Functional Programming 重新流行起来的很重要的原因之一。BTW,推荐这个Slides也是为了安利 ReactiveCocoa :),可以大幅度的减少iOS开发中的 state
The introduction to Reactive Programming you've been missing 虽然是针对 JavaScriptRx 库的,但是对 Reactive Programming 思想描述的非常清晰明了。
A FIRST LOOK AT REACTIVECOCOA 3.0 ReactiveCocoa 3.0的API入门文章
REACTIVECOCOA 3.0 - SIGNAL PRODUCERS AND API CLARITY ReactiveCocoa 3.0的API入门文章

iOS HotFix相关

标题 内容简介
JSPatch C 函数调用 JSPatch C 函数调用
JSPatch Playground JSPatch Playground is an interactive JSPatch coding environment, the iOS simulator will refresh and displays results instantly as js files save.
Xcode 代码补全插件 – JSPatchX 原理解析 Xcode 代码补全插件 – JSPatchX 原理解析
JSPatch 近期新特性解析 JSPatch 近期新特性解析
JSPatch更新:完善开发功能模块的能力 JSPatch更新:完善开发功能模块的能力
alibaba/wax Wax is a framework that lets you write native iPhone apps in Lua.
JSPatch实现原理详解 JSPatch作者对JSPatch实现原理的详解。
JSPatch 部署安全策略 JSPatch 部署安全策略
JSPatch Convertor实现原理详解 JSPatch Convertor 可以自动把 Objective-C 代码转为 JSPatch 脚本。
JSPatch JSPatch bridge Objective-C and Javascript using the Objective-C runtime. You can call any Objective-C class and method in JavaScript by just including a small engine. JSPatch is generally use for hotfix iOS App.
JSPatchConvertor JSPatch Convertor is a tool that converts Objective-C code to JSPatch script automatically.
Integrating JavaScript into Native Apps WWDC: Introducing a new Objective-C API to JavaScriptCore. iOS developers can now integrate scripting into their apps without having to bundle custom language interpreters. This API builds on top of the existing C API to JavaScriptCore available on Mac, and makes programming with JavaScript much easier and less error-prone.
Web Inspector and Modern JavaScript WWDC: Web Inspector, the powerful debugging tool in WebKit, is now available to JavaScriptCore-based apps. Find out how to leverage Web Inspector in your WebKit- and JavaScriptCore-based apps on iOS and OS X. Gain an overview of what's new in the JavaScript language and how to use modern JavaScript in your apps.
Objective-C Runtime Guide OC runtime相关知识, 对了解JSPatch有一定帮助。
iOS热修复(动态Framework) 介绍动态framework修复app

AsyncDisplayKit

标题 内容简介
AsyncDisplayKit源码 AsyncDisplayKit源码
AsyncDisplayKit 文档 AsyncDisplayKit 文档
Introducing AsyncDisplayKit: For smooth and responsive apps on iOS Introducing AsyncDisplayKit: For smooth and responsive apps on iOS
Building paper Building paper
Asynchronous UI Asynchronous UI
Effortless Responsiveness with AsyncDisplayKit Effortless Responsiveness with AsyncDisplayKit
AsyncDisplayKit 2.0 AsyncDisplayKit 2.0新特性介绍
AsyncDisplayKit Google Group AsyncDisplayKit Google Group
AsyncMessagesViewController A smooth, responsive and flexible messages UI library for iOS. Built on top of the awesome AsyncDisplayKit framework, it takes full advantage of asynchronous sizing, (non-auto) layout and text rendering to deliver a 5x fps (subject to increase) scrolling experience.
iOS App Performance: Graphics and Animations iOS App Performance: Graphics and Animations
iOS App Performance: Memory iOS App Performance: Memory
iOS App Performance: Responsiveness iOS App Performance: Responsiveness
Building Concurrent User Interfaces on iOS For a great user experience, it's essential to keep your application responsive while it renders complex UI elements and processes data. Learn how to use concurrency at the UIKit layer to perform drawing and other common operations without blocking user interaction.

视频资源

标题 内容简介
swift talk We show our solutions to problems we find while building Swift projects. Enjoy a new episode of Swift Talk every week, packed with live-coding and discussions about the pros and cons of our decisions.
Facebook 2016 f8视频 Facebook 2016 f8视频
Building Fabric.app in Swift When the Fabric team at Twitter wrote their new iOS app, they turned to Swift. Why? Javi Soto walks through their decision, and tells why they picked a language that emphasizes stability and maintainability & supports dependency injection, code generation, MVVM, and error reporting.
Artsy 的测试之旅 Artsy 拥有 4 个 iOS 应用,它们都已经全部开源,并且都采用了不同的方法来进行了测试。为什么这样做呢?因为不同的测试技术在各种的情况下的优劣各有不同。在 try! Swift 的本次演讲中,Ash Furrow 讨论了 Artsy iOS 团队做出这种决策背后的动机,谈论了他们所遇见到的问题,以及他们是如何克服这些困难的,以便能够帮助您更好的理解:为什么对于构建精美应用来说,进行测试以及何时进行测试是非常重要的。
Developing iOS 9 Apps with Swift 斯坦福的iOS开发课程,还是老头讲。
Facebook F8 2016 Youtube上的5个小时的《Facebook F8 Developer Conference 2016》可以学到很多东西,推荐。
Using Injection for Xcode - Runtime Code Injection Using Injection for Xcode - Runtime Code Injection
Brian Partridge - Result Driven Development 录音不是特别清楚,但是内容很好。需要翻墙
iOS内存管理及优化 上 下
Sharing Swift between iOS and OS X iOS 和 OS X之间共享代码, 演讲人 @wilshipley founder of Omni Group
Fun with Swift Chris Eidhof(objc.io创始人)
pomo.tv A collection of videos about Mac, iOS and Swift. Chris Eidhof 创办
The evolution of an iOS programmer Chris Eidhof本人讲述自己在iOS开发过程中的成长与收获。其中还是有很多点比较具有通用性,比如,写代码的时候时刻想着是为以后接收你代码人而写等等。

Debug

标题 内容简介
Using CocoaPods in Xcode Playgrounds :doughnut: :circus_tent: 在Playground中使用CocoaPods
手把手教你如何分析 iOS 系统栈 crash 手把手教你如何分析 iOS 系统栈 crash
与调试器共舞 - LLDB 的华尔兹 Xcode LLDB 详解
使用LLDB调试程序 使用LLDB调试程序

iOS 新特性

标题 内容简介
开发者所需要知道的 iOS 10 SDK 新特性 开发者所需要知道的 iOS 10 SDK 新特性
Supporting IPv6 DNS64/NAT64 Networks 苹果有关适配IPV6的文档
Apple Pay 编程指南 Apple Pay介绍,配置和接入等
WWDC 2014 Session笔记 - iOS界面开发的大一统 什么时候可以抛弃iOS 7了,好多UI实现都可以换了
初探 iOS8 中的 Size Class 初探 iOS8 中的 Size Class
iOS9适配系列教程 iOS9适配系列教程
iOS 9 开发高级技巧 - 通过 12 个团队所提供的技巧来快速适配 iOS 9 iOS 9 开发高级技巧 - 通过 12 个团队所提供的技巧来快速适配 iOS 9
iOS 7 - 9新特性总结 总结iOS7-9开发者应该关注的变化。
Live Photo API on iOS What are Live Photos? From a marketing perspective, Live Photos record the moments just before and after you take a photo. Under the hood, a Live Photo is just a JPEG image together with a QuickTime file contaning an H.264 track.

工具/插件

工具/插件 简介
Potatso Potatso is an iOS client that implements Shadowsocks proxy with the leverage of NetworkExtension framework in iOS 9.
BuildTimeAnalyzer for Xcode Build Time Analyzer for Swift
wwdc downloader WWDC 2016 video downloader script written in Swift - no external dependency.
WWDC app for OS X WWDC app for OS X
octotree 推荐了一款chrome上显示github代码树的插件,octotree
nsdateformatter.com Easy Skeezy Date Formatting for Swift and Objective-C
swift watch SwiftWatch is a place to share links to interesting Swift resources like tutorials, blog posts, GitHub projects or more.
search code Search over projects from Github, Bitbucket, Google Code, Codeplex, Sourceforge, Fedora Project, GitLab and more.
xi editor A modern editor with a backend written in Rust. from Google
Xcode Search Xcode search也许你还不知道的用法。
Build Me Up An Xcode plugin that keeps track of how long Xcode takes to build your project(s). It accumulates the total time and displays in the Activity View in the Xcode toolbar.
JSPatchX A XCode plugin that provides autocompletion for JSPatch
injection for xcode Runtime Code Injection for Objective-C & Swift
facebook xcbuild xcbuild is an Xcode-compatible build tool with the goal of providing faster builds, better documentation of the build process and running on multiple platforms (in particular OS X and Linux)
Xcode 插件介绍 文章推荐的几款插件都有助于提升Xcode开发效率,推荐尝试。
CleanMyMac 3 智能清理Mac磁盘空间。
如何用Github去管理你的Idea 如何用Github去管理你的Idea
Nomad World-Class Command Line Utilities For iOS Development. Mattt大神作品
fastlane fastlane lets you define and run your deployment pipelines for different environments. It helps you unify your app’s release process and automate the whole process. fastlane connects all fastlane tools and third party tools, like CocoaPods and Gradle.
Quiver 记事本工具软件,记录代码可以有各种语言语法高亮,支持markdown, LaTeX;支持同步备份等功能。
How to update an Xcode plug-in for the latest version of Xcode 解决更新Xcode后,插件无法使用的方法。注:示例上用的是XVim,把插件换成对应名称即可。
Alcatraz Xcode插件管理工具
XTodo 收集项目中的所有TODO,FIXME,???, !!!,并提供了一个页面用于查看。
Carthage 新的依赖管理工具 Carthage,和Cocoapods相比,Carthage是非侵入式的,不会修改xcode工程文件,只是帮助build出来frameworks。更灵活更干净。
LANTERN 科学上网神器,速度快,稳定。
XcodeColors 使 Xcode 调试控制台色彩更丰富
ClangFormat-Xcode 代码格式化工具
A quick reference for iOS devices. iOS 设备属性查询

程序员的自我修养

文章 简介
How does a relational database work 关系数据库原理,文章很长,适合慢慢看。。。
Rob Pike - 'Concurrency Is Not Parallelism' Rob Pike讲解Concurrency 和 Parallelism的区别.
成为谷歌程序员,你需要准备什么? 成为谷歌程序员,你需要准备什么?
TED 采访linus 中文字幕版
程序员到底是一个什么职业? 程序员到底是一个什么职业?
MARGARET HAMILTON MARGARET HAMILTON,一个女程序员,她的代码把人送上了月球。有兴趣的朋友可以前往一读
编程的智慧 编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋。然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获。
为什么你应该先成为全栈工程师 为什么你应该先成为全栈工程师
作为一个程序员,进步完全取决于自己 文章中说道,作为一个程序员要不断尝试学习新的知识,充实自己。不要在乎学的东西现在有没有用处,要让自己的大脑不断接触新的东西。
技术高手如何炼成 技术高手如何炼成
teach yourself programming in ten years Peter Norvig一篇如何学习编程。
how to be a hacker how to be a hacker
Test-Driven Development is Stupid 关于TDD的一篇文章,可以看看,以及Hacker News上的 讨论
ABC: Always be coding 如何提(准)升(备)自(面)己(试)。
Leveling Up 个人觉得是一篇很好的iOS进阶提升的一个好文章,推荐给有一定iOS开发经验并想继续提升自己的同学。
软件专利的荒谬性 Patent_Absurdity 推荐一部纪录片《软件专利的荒谬性》

博客

博客地址 博主信息
一个iOS菜菜的白话文记录 一个高产的博主
Rollout Deploy code-level changes to native iOS apps,without waiting on the App Store.
美团技术团队博客 美团技术团队博客
微信阅读团队技术博客 微信阅读团队技术博客
移动开发前线 移动开发前线
twitter技术团队博客 twitter技术团队博客
Clean Swift Clean Architecture + TDD. Code less. Test more.
swift modules Swift Modules is an open and searchable index of Swift Package Manager modules. Swift version 3, currently in beta, introduced the Swift Package Manager. It makes packaging and including Swift libraries incredibly easy, but discovering these modules is still somewhat problematic. Swift Modules aims to solve that problem by providing tools to help you find and integrate packages!
小土刀 各种CMU课程的笔记等技术文章。
Garan no Dou @ibireme 文章深入, 开源代码质量高,值得关注
OneV's Den 王巍(喵神), 现居日本, 就职于 LINE, 知名 iOS 开发者, 写的文章大多深入浅出, 内容广泛, 目前在维护的 Swifter 也值得收藏
唐巧的技术博客 唐巧, 国内知名 iOS 开发者, 现就职于猿题库, 博客推出的 iOS 移动开发周报很受欢迎, 更新频繁
txx's blog 90 后 iOS 开发者, 人称虾神, 文章内容讲解大多浅白易懂, 很值得看
破船之家 博主也是 iOS 大神一个, 经常更新一些 iOS 教程, 文章的质量都很高, 非常值得看
NSHipster NSHipster 的中文网站, 主要对 NSHipster 的英文网站进行翻译, 博文出自 Mattt 大神之手, 文章大都写得很深入, 详细, 每周一更
Limboy 无网不剩 李忠, 知乎前员工, 目前在负责花瓣 iOS 开发, 不少文章里面有介绍博主个人的学习方法, 让读者在学到技术的同时也掌握学习的技巧
iOS技术周报 吴发伟, 天猫资深软件开发工程师, iOS 技术周报每周一更, 推送一些 iOS 技巧, 代码库, 设计等资讯.
iWangKe.me 王轲, IndieBros Studio 创始人, 优秀的 iOS 开发工程师, 写的文章深入浅出, 很多问题分析透彻, 非常有条理性
叶孤城 叶孤城, 优秀 iOS 开发工程师, 发表的文章都有很多干货, 对源码解析类文章写得浅显易懂, 并时常总结一些 iOS 开发技巧, 值得一读
Kevin Blog 周楷雯, 秒视创始人, 知名 iOS 工程师, 做出了PNChart 和Waver 这样的好项目, 在博客中也有谈到具体的实现过程
IMTX 图拉鼎, 知名 Apple 平台开发者, 曾经的 Ubuntu 平台开发者, 文章有不少干货, 大多讲解技术实现和学习经验
Facebook iOS技术博客 Facebook 在iOS上的一些优秀实践,很多值得我们学习,希望大家也多多关注。
SwiftGG 翻译的Swift国外优秀技术博客
原文  https://github.com/BaiduHiDeviOS/iOS-Tech-Weekly
正文到此结束
Loading...