本文是基于BeeHive版本1.6.0进行分析。

BeeHive核心思想涉及两个部分:

  1. 各个模块间从直接调用对应模块,变成以Service的形式,避免了直接依赖。
  2. App生命周期的分发,将耦合在AppDelegate中的逻辑拆分,每个模块以微应用的形式独立存在。

Core+Plugin的形式可以让一个应用主流程部分得到集中管理,不同模块以plugin形式存在,便于横向的扩展和移植。

Continue reading

情景:把一堆算法塞到同一段代码中,然后使用if-else或者switch-case条件语句来决定要使用哪个算法?这些算法可能是一堆相似的类函数或方法,用以解决相关的问题。例如验证数据输入的情形,数据本身可以是任何数据类型(如CGFloat,NSString,NSInteger等),每种数据类型需要不同的算法。如果把每一种算法封装成一个对象,那么就能消除根据数据类型决定使用什么算法的一堆if-elseswitch-case语句。 面向对象软件设计中,我们可以把相关算法分离为不同的类,成为策略,对应的设计模式称为策略模式。

Continue reading

__attribute__

__attribute__是在C, C++, Objective-C语言中使用的编译指令,一般以__attribute__(xxx)的形式出现在代码中,方便开发者向编译器表达某种要求,参与控制如Static Analyzer、Name Mangling、Code Generation等过程。

Continue reading

UICollectionViewLayoutAttributes是UICollectionView的重要组成部分,本文从其基本定义、如何使用以及使用场景几方面来简单介绍。文末以自定义UICollectionView各个Section的背景色的示例来展示UICollectionViewLayoutAttributes的应用。

Continue reading

iOS 的开发过程中,会遇到弹出模态视图进行交互的情况,用户实际操作区域只占屏幕的一部分,其余区域使用半透明黑色遮罩进行覆盖。下面就记录一下实现如下所示模态视图的方案。 Popup_Window动画 这里有3种实现方案, 根据情况可选择合适的方案: 添加视图到ViewController.view.window上 使用系统提供的模态转场 切换window 添加视图到ViewController
Continue reading

与公司 QA 聊天,已不止一次被吐槽说移动端从开发环境转到生产环境时,还要靠修改代码来配置对应的环境参数。她认为,从 App 转测试之后,就不应该再修改代码,可以把所有的环境配置都整合到配置文件中,这样打不同环境下的安装包时,会自动选择对应的环境参数。这里说到的环境参数包括但不仅限于: webservice 地址,友盟 AppKey,极光推送 AppKey 和是否是生产环境标志等。

其实,我也讨厌修改环境参数啊,😂

为达成上述目的,主要是使用 Xcode 的 Configurations Setting File(即后缀为 xcconfig 文件) 来配置开发不同阶段下的环境。本文包含的内容如下:

Continue reading

使用 == 比较 iOS 中的对象时,比较的是对象的指针。例如有如下比较时:

1
2
3
4
5
6
7
8
9
NSString *str = @"origin1";
NSString *strCopy = [str copy];
NSString *str1 = [NSString stringWithFormat:@"origin%@", @1];

BOOL equalA = (str == strCopy);
BOOL equalB = (str == str1);

BOOL equalC = [str isEqualToString:str1]; /**< equalC is YES */
BOOL equalD = [str isEqual:str1]; /**< equalD is YES */
Continue reading

CaryaLiu

宅男一枚, 在前进的道路上.


iOS开发工程师


成都