iOS Libs 与 Frameworks 的理解和使用

作者:JerryXia | 发表于 , 阅读 (0)

本文将从两个角度——理论与实践,来介绍 iOS 开发中接触到的动态库、静态库、framework。理论部分会以简单的例子来建立对概念的理解;实践部分则是使用 cocoapods 的一些技巧。
名词首先我们熟悉一下以下名词概念:
代码(code):不止是指源代码(source code)形式的代码,也指代编译后产生的二进制代码。
Mach-O:操作系统能够使用的二进制文件格式,很多种类的文件都是 Mach-O 文件,包括动态库、静态库、可执行文件,都是 Mach-O 文件。本文将替换使用多种代称,比如 object file、对象文件,都是指同一个概念。
动态库、 dynamic linked library、dynamic library、shared library、embedded shared library 这些名词都是指动态库。
理解 Libs 与 FrameworksLibs(库),或是 Frameworks,无论静态还是动态,都是一种依赖管理的形式,其最终目的都是将程序依赖的代码载入到程序所在进程的地址空间中,从而让我们的程序能够使用它们。静态库、动态库只是...阅读全文

Amigo 源码解读

作者:JerryXia | 发表于 , 阅读 (0)

Amigo 源码解读现在 hotfix 框架有很多,原理大同小异,基本上是基于qq空间这篇文章或者微信的方案。可惜的是微信的 Tinker 以及 QZone 都没有将其具体实现开源出来,只是在文章中分析了现有各个 hotfix 框架的优缺点以及他们的实现方案。Amigo 原理与 Tinker 基本相同,但是在 Tinker 的基础上,进一步实现了 so 文件、资源文件、Activity、BroadcastReceiver 的修复,几乎可以号称全面修复,不愧 Amigo(朋友)这个称号,能在危急时刻送来全面的帮助。
首先我们先来看看如何使用这个库。库地址:https://github.com/eleme/Amigo
用法   在project 的build.gradle 中
dependencies {  classpath 'me.ele:amigo:0.0.3'}在module 的build.gradle 中
apply plugin: 'me.ele.amigo'就这样轻松的集成了Amigo。
生效补丁包   补丁包生效有两种方式可以选择:
稍后生效补丁包
如果不...阅读全文

使用链式调用解决多可选参数接口设计问题

作者:JerryXia | 发表于 , 阅读 (0)

问题我们在 coding 的征途中,总会写下几个(or 几十个?)xxxUtils 之类的东西。想象有这样一个 NVMImageUtils,一开始它的接口是这样的:
+ (UIImage *)imageWithSize:(CGSize)size color:(UIColor *)UIColor {  // IMP}马上需要加个参数 borderColor,是可选的,于是接口成了这样:
+ (UIImage *)imageWithSize:(CGSize)size color:(UIColor *)UIColor {  return [self imageWithSize:size color:color borderColor:nil];}+ (UIImage *)imageWithSize:(CGSize)size color:(UIColor *)UIColor borderColor:(UIColor *)borderColor {  // IMP}过段时间再加个参数 cornerRadius:
+ (UIImage *)imageWithSize:(CGSize)si...阅读全文

移动组博客的选型和构建

作者:JerryXia | 发表于 , 阅读 (0)
 authored by stephenwzl
今天饿了么移动组首席表情官来和你聊聊这个博客系统是怎么做的,准备好了首先,浩浩荡荡的二十来号人,总有些需求没地方发泄,大家有一句没一句地一聊,哎?咱弄个博客吧那就弄吧,一没服务器,二没域名,三没什么文笔,不过谁说过来着,人有多大胆,地有多大产,很快咱就发现 Github Pages 一不要域名,而不要服务器,能拿来弄个网站呀。但说到要手写HTML,大伙的反映是这样的什么年代了,食堂都有自动打饭机了,咱还能这么土吗。果不其然,找了一个玩意叫 Hexo,很快咱就把第一版网站给弄上线了。上线后很快就发现一个问题,咱堂堂这么大组的博客,它长得怎么这么丑!干了十多年装修工的我就出了个主意:咱给他重新装修一下吧。老大一拍板:好,这也不失为一个馊主意。于是除了首席表情官的身份,咱又多了一个身份叫首席装修工。拿起锤子镰刀,我就搞出了一个新的来,怎么搞的呢,且听我细细道来。  
首先,咱得会一点 Node.js,搞清楚 Hexo是怎么干的。也不知道是它学 Jekyll还是 Jekyll学它,他俩都有几个共同点:  
靠模板生成不同的页面的内容,靠配置...阅读全文

 linux errno 含义 | 游戏编程 

作者:JerryXia | 发表于 , 阅读 (0)
Linux errno 注解分布在两个文件中,罗列于此,方便查阅。
/usr/include/asm-generic/errno-base.h123456789101112131415161718192021222324252627282930313233343536373839#ifndef _ASM_GENERIC_ERRNO_BASE_H#define _ASM_GENERIC_ERRNO_BASE_H#define EPERM            1      /* Operation not permitted */#define ENOENT           2      /* No such file or directory */#define ESRCH            3      /* No such process */#define EINTR            4      /* Interrupted system call */#define EIO              5      /* I/O error */#define ...阅读全文