Home

FlutterBoost设计与实现分析

前言 FlutterBoost是闲鱼技术团队开发并维护的,面向iOS/Android端的Flutter混编解决方案。FlutterBoost不仅仅是一个Flutter Plugin,那只是它的工程形态。我倾向于认为FlutterBoost定义了Native/Flutter混合栈开发模式下,一套标准的Flutter使用方式,包括页面栈管理与路由、应用/页面生命周期管理、Flutter/Native页面传参方式等核心问题的解决方案。FlutterBoost致力于通过框架建设,标准化Flutter的使用方式,从而降低Flutter的使用门槛,让开发者能够像使用WebView一样使用Flutter。 本文依据官方文档、代码,结合个人理解,Native侧以iOS平台为例,详述FlutterB...

Read more

Cocoa Frameworks

引言 在Cocoa/Cocoa Touch框架中,我们经常使用Framework作为代码和资源的共享方式。那么Framework到底是什么呢?其实并不神奇,Framework其实就是一个Bundle。而所谓Bundle,是指一个内部结构按照标准规则组织的特殊目录。 值得说明的是Framework和静态库以及动态库的区别。.a和.dylib分别为静态库和动态库,它们本身就是编译好的二进制代码。而Framework,以.framework作为扩展名,它其实是对静态库/动态库的一层包装,目的是为了方便使用。 除包含二进制代码以外,Framework还可以包含头文件、nib文件、图片、字符串子资源文件。 Framework分类 常见的Framework有三类,分别为: Sta...

Read more

macOS 10.15 Vim crash修复之路

macOS 10.15 Catalina更新以后,我第一时间更新了系统。但这次系统升级遇到的问题,比我预期的要多。对我而言,其中影响比较大的是MacVim不能用了。 Crash 1 每次启动是都会报如下错误: dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/libruby.2.3.0.dylib Referenced from: /usr/local/Cellar/macvim/8.1-157/MacVim.app/Contents/MacOS/Vim Reason: image not found fish: 'vim' terminated...

Read more

基于Github、Typora、jekyll建立博客写作平台

如今markdown基本成了轻量写作的标准方案,而且互联网比较流行的平台,诸如Github、简书、CSDN等都对markdown提供了支持。这些第三方写作平台提供写作便利的同时,也有一些不足,比如格式上不允许做定制,语法支持不完善等。 除此之外,markdown写作还有以下痛点: 图片托管。采用免费的图床的话不够稳定,经常被限制,导致博客中的配图无法显示,如果付费购买对象存储空间的话,又需要付费,同时上传也比较麻烦。 markdown只支持有限的标记,如果想扩展标记,许多第三方写作平台是不支持的。比如以下常用的扩展标记,单纯依靠markdown就无法完成: Success Text. Info Text. Warning Text. Error Text. 本...

Read more

NSCollectionView vs UICollectionView

NSCollectionView是AppKit框架提供的集合视图控件,用于构建macOS App。如今的NSCollectionView和UICollectionView在设计思想上有非常多的类似,但是又有诸多不同。本文将对二者的差异进行简单的对比,并给出使用纯代码创建NSCollectionView的方法。 我们先来看下,二者提供的API,如下表所示:   NSCollectionView UICollectionView Super Class NSView UIScrollView Cell NSCollecti...

Read more

纯代码创建macOS App

无论是开发iOS还是macOS App,我都喜欢使用纯代码来创建整个App。对我而言,纯代码的好处是,我能清楚地『看到』App做了什么,而不是要忍受Xcode给我的魔盒。采用纯代码开发,能让我更好地理解这门技术的实现原理,从而在以后开发中遇到问题时,能够更快地定位到问题的原因。 纯代码创建macOS App 废话不多说,来看下如何用Xcode创建一个Cocoa App。 新建一个Cocoa App项目,语言选Swift,不使用Storyboards。 删除MainMenu.xib和Info.plist文件中对应的属性。 新建ViewController,继承自NSViewController。 import Cocoa class Vi...

Read more

usbmux协议分析

usbmux协议介绍 初闻usbmux协议时,可能会让人感觉比较陌生,但其实如果你是MAC用户的话,你可能每天都在和它打交道,只是不知道而已。当通过USB将iPhone连接到MAC时,usbmux协议已经在背后为你默默工作了。 usbmux是苹果的私有协议,苹果设计该协议的原因是为了自家的macOS APP能够和iDevice进行通信,从而实现诸如iTunes备份iPhone、Xcode真机调试等功能。只是后来该协议被开发者破解了,于是为众人所知。 usbmuxd是对usbmux协议在macOS平台的上实现,也是macOS系统上的一个守护进程(Daemon),它随着系统的启动而启动。在macOS上,与usbmuxd相关的文件主要有3个: /System/Library/P...

Read more

Welcome

If you see this page, that means you have setup your site. enjoy! :ghost: :ghost: :ghost: You may want to config the site or writing a post next. Please feel free to create an issue or send me email if you have any questions.

Read more