Baidu Hi iOS 技术周报-2015.11.09

感谢本期周报线索提供同学:张萌

周报汇总 地址

周报博客 地址

文章:

Objective-C 的现代语法和新特性

iOS 处理图片的一些小 Tip

移动端图片格式调研

ReactiveCocoa系列:

细说ReactiveCocoa的冷信号与热信号(一)

细说ReactiveCocoa的冷信号与热信号(二):为什么要区分冷热信号

细说ReactiveCocoa的冷信号与热信号(三):怎么处理冷信号与热信号

RACSignal的Subscription深入分析

深入理解Objective-C

深入理解Objective-C:Category

深入理解Objective-C:方法缓存

开源代码:

SwiftGen: This is a suite of tools written in Swift 2 to auto-generate Swift 2 code for various assets of your project:

  • enums for your Assets Catalogs
  • enums for your Localizable.strings strings.
  • enums for your UIStoryboard and their Scenes
  • enums for your UIColors.

YYWebImage:

YYWebImage is an asynchronous image loading framework (a component of YYKit).It was created as an improved replacement for SDWebImage, PINRemoteImage and FLAnimatedImage.

Baidu Hi iOS 技术周报-2015.11.02

文章:

Advanced & Practical Enum usage in Swift: Swift中Enum的使用实践

纯Swift2.0工程CocoaChina+从0到1遇到的坑和解决方案

利用UIWebView打造一个炫酷的视频背景视图(OC & Swift): 视频背景View, 适合做Hi 5.0的登录窗口。

一系列范畴论和函数式编程思想的文章: by zhangmeng

个人认为iOS开发之所以值得花精力去学习函数式编程的思想,主要是基于几点:

  1. Swift语言大量吸收了Haskell的设计,包括最基础的Optional、枚举、数组、字典,全都借鉴了Haskell的设计,并且提供了类Haskell的一些API,学习FP,可以写出更简洁更安全的Swift代码。
  2. FP可以最大限度的减少程序中『状态』的使用,进而大量减少代码因为『状态』而产生的bug。
  3. 函数响应式编程是更先进的GUI的设计,学习FP才能真正用好ReactiveCocoa和RxSwift。
  4. 最后,FP是一个程序员提升编程思想境界体现逼格的利器之一:)

<译> 写给程序猿的范畴论 · 序

<译> 范畴:复合的本质

<译> 类型与函数

<译> 范畴,可大可小

<译> Kleisli 范畴

<译> 积与余积

以上是译文,未完成版的英文全文:Category Theory for Programmers

对单子的求索

Facebook开源的Parse源码分析 by zhangmeng

开源代码:

alibaba/wax: Wax is a framework that lets you write native iPhone apps in Lua.

PhoneNumberKit: Swift framework for parsing, formatting and validating international phone numbers. Inspired by Google’s libphonenumber.

Instructions: 新手引导

Baidu Hi iOS 技术周报-2015.10.26

视频:

有关JavaScriptCore 相关的WWDC Session:

Integrating JavaScript into Native Apps: 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: 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.

文章:

Swift 2.0: 深入浅出 Map 和 FlatMap 概念:又来一篇Swift和Functional Programming的文章 by zhangmeng

Elastic view animation using UIBezierPath by zhangmeng

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.

Baidu Hi iOS 技术周报-2015.10.19

文章:

如何配置一个高效的 Mac 工作环境》 by zhangmeng

iOS APP安全杂谈之三》 by zhangmeng

iOS架构总结贴,根据上周桉远推荐的一片文章挖出来的全系列,确实是平时在设计架构的过程中经常踩的坑: by zhangmeng

跳出面向对象思想(一) 继承

跳出面向对象思想(二) 多态

跳出面向对象思想(三) 封装

iOS应用架构谈 开篇

iOS应用架构谈 view层的组织和调用方案

iOS应用架构谈 网络层设计方案

iOS应用架构谈 本地持久化方案及动态部署

Software Architecture Patterns pdf

以及Hacker News上关于这本书的讨论:https://news.ycombinator.com/item?id=9310576

再补一篇 by zhangmeng 《构建iOS稳定应用架构时方案选择的思考

iOS高性能图片架构与设计》 by zhangmeng

两篇Autolayout的文章: by zhangmeng

10 Things You Need to Know About Cocoa Auto Layout

iOS Auto Layout: Fun Facts and Tips

开源代码:

Aspects by zhangmeng:再也不用自己写丑陋的method swizzling代码了。

Xcode插件

  1. 之前新宁推荐了一个插件管理工具Alcatraz http://alcatraz.io
  2. XTodo: https://github.com/trawor/XToDo 收集项目中的所有TODO,FIXME,???, !!!,并提供了一个页面用于查看。

Baidu Hi iOS 技术周报-2015.10.12

视频:

Advanced NSOperations: 对于使用NSOperation提供了一个新颖的使用方案,比较开拓思路,此seesion有sample code结合观看效果更加 [tag: Swift]

文章:

Objective-C vs Swift messages dispatch by zhangmeng: Objective-C和Swift的消息派发机制 [tag: Swift]

Inside Swift by zhangmeng:Swift的内部机制 [tag: Swift]

iOS应用架构谈:本地持久化方案及动态部署:iOS应用架构谈四部曲之四 [tag: Swift]

开源代码:

FDStackView:Use UIStackView directly in iOS6+ ,百度知道团队开源代码 [tag: Swift]

Reachability.swift:Replacement for Apple’s Reachability re-written in Swift with closures.[tag: Swift]

Swift Radio Pro:完整的Swift 2.0的App 开源应用。[tag: Swift]

Advanced NSOperations sampel code: WWDC 2015 Advanced NSOperations 的sample code [tag: Swift]

Baidu Hi iOS 技术周报-2015.10.05

视频:

Controlling Complexity in Swift

文章:

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简明易懂的做了解释。

开源代码:

Blurable: Apply a Gaussian Blur to any UIView with Swift Protocol Extensions

Neon:A powerful Swift programmatic UI layout framework.Build dynamic and beautiful user interfaces like a boss, with Swift.

Async: Syntactic sugar in Swift for asynchronous dispatches in Grand Central Dispatch

问题

iOS 9 的 KVO 性能好像下降的很厉害

Baidu Hi iOS 技术周报-2015.09.28

感谢本期周报投稿同学:张萌,桉远

文章:

Swift 模式识别详解:不必多说,好文章!

Swift 2.0 如何写单例: 在项目中,我们经常会使用单例,在Swift如何写正确的写单例呢?本文作者详细讲述OC到Swift单例写法的变化,最后作者提出了一个最为简洁,优雅的写法。

Thinking in Swift, Part 2: map those arrays: Thinking in Swift 系列文章的第二篇,继续推荐。

Live Editing Layout Constants Using Classy, Masonry and ClassyLiveLayout:实时显示iOS编写UI代码效果

开源代码:

新的依赖管理工具 Carthage,和Cocoapods相比,Carthage是非侵入式的,不会修改xcode工程文件,只是帮助build出来frameworks。更灵活更干净。

SnapKit: SnapKit is a DSL to make Auto Layout easy on both iOS and OS X.

XcodeColors: 日志按类别显示颜色插件

Hacking With Swift: Swift 教程,以做小项目学习Swift

Decodable: Swift 解析JSON, Chris Lattner(LLVM 作者) 推荐

Baidu Hi iOS 技术周报-2015.09.21

感谢本期周报投稿同学:曹华,张萌,桉远

文章:

代码整洁之所以重要的七个理由

技术债务:究竟让你付出了多大代价?

CocoaPods的一些略为高级一丁点的使用

iOS9适配系列教程

iOS 9 开发高级技巧 - 通过 12 个团队所提供的技巧来快速适配 iOS 9

Code examples for the new features of iOS 9

On Using SQLite and FMDB Instead of Core Data:关于使用Sqlite的一些实践,对我们项目里Sqlite的使用有很多可以借鉴的东西。

Thinking in Swift, Part 1: Saving ponies
:这篇文章对比oc和Swift, 来帮助读者更快适应Swift的思考方式。

Enums as constants:本文介绍了很多Swift中enum的使用场景,很值得学习。

SwiftGG:翻译的Swift国外优秀技术博客

开源代码:

Facebook的开源库 React Native,使用 React.js 开发原生应用

开源库FCModel依据On Using SQLite and FMDB Instead of Core Data做了实现。

Baidu Hi iOS 技术周报-2015.09.14

Apple 3D Touch Demo

https://developer.apple.com/ios/3d-touch/

开源完整IM:

MessageDisplayKit 模仿微信样式的开源IM
MessageDisplayKit

蘑菇街开源IM
TeamTalk

开源聊天界面组件:

JSQMessagesViewController

Code Formatter

Automatically Formatting Your Objective-C

两篇CALayer动画的教程

CALayer Animation实践(一):让应用灵动起来!

CALayer动画实践(二):CAReplicatorLayer的用法

iOS 7 - 9 新特性

iOS 7

  1. Text Kit
    • 文字排版相关
  2. 多任务
    • 设置UIBackgroundModesfetch来进行定期后台下载。
    • 设置UIBackgroundModesremote-notification, 用远程推送的方式,来让应用在后台进行下载内容。
  3. NSURLSession 用来替代NSURLConnection,配合多任务后台下载使用。
  4. AirDrop
    附近设备分享传输文件,不需要网络。
  5. 新Framework:
    • GameController.framework - 与游戏硬件通信
    • SpriteKit.framework - 游戏图形渲染和动画
    • Multipeer connectivity framework - 点对点网络
    • JavaScriptCore.framework - JavaScript对象的oc封装
    • MediaAccessibility.framework
    • SafariServices.framework - 用程序添加URL到用户Safari的阅读列表等

iOS 8

  1. Swift 1.0

  2. App Extension

    • Share, 在系统提供的分享选项中添加自己
    • Action, 对于选中内容可以执行一个action
    • Today, 通知中心的widget
    • Photo editinig.
    • Storage provider. 与其他应用共享文件存储位置
    • 自定义键盘
  3. Touch ID
  4. Photos Framework
  5. AV Audio Engine: Core Audio 更上层的封装。
  6. HealthKit Framework
  7. HomeKit Framework
  8. Handoff
  9. Size class
  10. Metal - 替代OpenGL ES

iOS 9

  1. Swift 2.0: 错误处理,Availability, Protocol extensions等
  2. iPad 多任务
  3. watchOS2
  4. UI Test
  5. App Thinning
  6. Search API可以搜索App内容
  7. 新系统字体San francisco
  8. Safari View Controller
  9. Contacts Framework
  10. 3D Touch
  11. Live Photo
  12. UIStackView

参考资料:
1.https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS7.html

2.https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html#//apple_ref/doc/uid/TP40014205-SW1

Baidu Hi iOS 技术周报-2015.09.06

Enemy of the State

主要是讲程序设计中state的坏处,以及用stateless编程的好处。这也是近些年来Functional Programming重新流行起来的很重要的原因之一。
BTW,推荐这个Slides也是为了安利ReactiveCocoa:),可以大幅度的减少iOS开发中的state

ReactiveCocoa

再推荐几篇ReactiveCocoa相关的文章,之前ReactiveCocoa 2.x由于Objective-C自身语言特性的限制,API还是显得比较繁重。有了更加函数式的Swift语言之后,用Swift重写的ReactiveCocoa 3.x更加充分的展现了Reactive Functional Programming的特点,API更加轻量清晰,语法更简洁,非常推荐入手。

The introduction to Reactive Programming you’ve been missing》,虽然是针对JavaScriptRx库的,但是对Reactive Programming思想描述的非常清晰明了。

两篇ReactiveCocoa 3.0的API入门文章:

A FIRST LOOK AT REACTIVECOCOA 3.0

REACTIVECOCOA 3.0 - SIGNAL PRODUCERS AND API CLARITY

Leveling Up

个人觉得是一篇很好的iOS进阶提升的一个好文章,推荐给有一定iOS开发经验并想继续提升自己的同学。