Allen

Allen

用 Swift 解读 React/React Native: Part 1 - React Element & React Component

React & React Native 不只是一种框架,它更是一种思维方式和方法论。 Glow 使用 React Native 至今一年半有余,项目里也有越来越多的组件被重构成 React Native。在使用 React Native 开发的过程中,我们对 React 和 React Native 本身的思想、架构也有了越来越深入的理解。而这些思想又开始逐渐反作用到 Native 的开发,影响着我们在其他 Native 组件开发过程中的架构选择和实现思路,促使我们重新审视 Native 的开发方式。 通过这个系列的文章,我们想把从 React 和 React Native 中所学,总结成一些有用的经验,为团队将来无论是 React Native 还是 Native 的开发提供有价值的指导。更长远的,我们希望基于这些经验构建一个新的 Native
  • Allen
    Allen
react-native

如何实现 React Native 里的页面导航系统

React Native 中的页面导航和跳转一直是一个让人头疼的问题,其实社区里也已经有各种实现,比如 react-navigation,wix/react-native-navigation,LeoLeBras/react-router-navigation,airbnb/native-navigation,如你所见,react native navigation 三个单词各种排列组合基本上都有了,所以从这些 library 里挑一个合适的同样更让人头疼。 我们在新起的项目中决定用纯 React Native 实现,以尽量减少对 native 的依赖,并且避免因 hybrid app 中 native 页面的层次结构(iOS 中 view controllers,Android 中 activities)在 React 侧不可知、不可控带来的状态管理问题。因此区别于在 React Native 在 Glow 的实践
  • Allen
    Allen

React Native 在 Glow 的实践

1. 为什么使用 React Native 在最近发布的 Eve v2.8 里,我们用 React Native 重构了几乎整个 Community。本文记录了 React Native 在 Glow 的实践经验,并主要从 iOS 角度展开一些细节实现。但本文不会涉及太多 React Native 的入门知识,如果你还没有接触过 React Native,推荐先阅读官方文档和 React Native Express。 使用 React Native 主要原因: * 在 JSPatch 和 Rollout.io 被 Apple 封杀以后,需要一种方法热修复 Live Bug * 可以通过热更新的方式发布新的功能或者修改
  • Allen
    Allen
ios

当 NSDictionary 遇见 nil

Demo project: NSDictionary-NilSafe 问题 相信用 Objective-C 开发 iOS 应用的人对下面的 crash 不会陌生: * *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1] * *** setObjectForKey: key cannot be nil * *** setObjectForKey: object cannot be nil Objective-C 里的 NSDictionary 是不支持 nil 作为 key 或者 value 的。但是总会有一些地方会偶然往 NSDictionary 里插入 nil value。在我们的项目开发过程中,
  • Allen
    Allen
ios

Deferred Deep Linking in iOS

Deep Linking 其实 deep linking 并不是一个新名词,在 web 开发领域,区别于指向首页的链接(http://tech.glowing.com/),deep linking 是指向具体内容页的链接(http://tech.glowing.com/cn/advices-to-junior-developers/)。在移动开发领域,deep linking 则是指 mobile app 在 handle 特定 URI 的时候可以直接跳转到对应的内容页或触发特定逻辑,而不仅仅是启动 app。比如 dianping://shopinfo?id=1859284,如果你的手机上装了大众点评的话点击这个链接可以直接跳转到商铺页面。这样做的好处主要有: * 在 web 和 app 的切换过程中保留上下文 * App 间带上下文切换(
  • Allen
    Allen
ios

GLPubSub - Glow iOS 中的订阅发布模式

前言 我们计划通过 blog 和开源的方式,分享一些我们在开发 Glow 和 Nurture 的过程中积累的开发经验。GLPubSub 作为开源计划的第一步,是一个代码量较少,但很实用的 Category。 GitHub: https://github.com/Glow-Inc/GLPubSub Documentation: http://cocoadocs.org/docsets/GLPubSub Notification 作为发布订阅模式(观察者模式)的一种,在 iOS App 的开发过程中很常见,GLPubSub 是 NSNotificationCenter 的封装,目标是简化 iOS 开发中的发布订阅模式。因为是 NSObject 的 Category,所以可以在任意 NSObject 的子类上使用。 安装 CocoaPods
  • Allen
    Allen
UIScrollView 实践经验
ios

UIScrollView 实践经验

UIScrollView(包括它的子类 UITableView 和 UICollectionView)是 iOS 开发中最常用也是最有意思的 UI 组件,大部分 App 的核心界面都是基于三者之一或三者的组合实现。UIScrollView 是 UIKit 中为数不多能响应滑动手势的 view,相比自己用 UIPanGestureRecognizer 实现一些基于滑动手势的效果,用 UIScrollView 的优势在于 bounce 和 decelerate 等特性可以让 App 的用户体验与 iOS 系统的用户体验保持一致。本文通过一些实例讲解 UIScrollView 的特性和实际使用中的经验。 UIScrollView 和 Auto Layout iPhone 5 刚出来的时候,大部分不支持横屏的 App 都不需要做太多的适配工作,因为屏幕宽度没有变,table view 多个 cell
  • Allen
    Allen