NSAssert 使用,在封装组件中使用
// 使 NSAssert 只进入断点,之后可以继续运行,而不会杀死程序 #undef NSAssert #define NSAssert(condition, frmt, ...) \ do { \ @try { \ if (!(condition)) { \ NSString *text = @"Assert Exception: "; \ text = [text stringByAppendingFormat:frmt, ##__VA_ARGS__]; \ LogError(@"%@", text); \ [NSException raise:@"NSAssertException" format:@""]; \ } \ } \ @catch (NSException *exception) {} \ } while (0); // 输出 Log,并自动进入断点,通常用于一些关键函数状态异常时,可以及时知晓 #define LogBreakpoint(frmt, ...) NSAssert(NO, frmt, ##__VA_ARGS__) #endif
NSClassFromString来进行你不确定的类的初始化。 id myObj = [[MySepecialClass alloc]init];会报错、id myObj = [[NSClassFromString(@”MySepecialClass”) alloc]init];只是返回nil
-
- App 启动 先读取写死的各个 业务线,再分别读取各业务线中的产品线,业务线需要加载哪些产品线实在 businessIds 中添加,然后将 产品线与 业务线 kv 形式对应 保存起来,加载page时候就知道当前是哪个产品线,对应取哪个业务线dataSource绑定<一个业务线dataSource可以对应多个产品线>。 《 业务dataSource 与 产品线 互相对应关系 kv》
- basePage 场景下,根据view生命周期,进行相关组件 创建、绑定数据源、绑定场景、触发场景与com沟通、添加xpanel等。
- viewDidLoad下—>comStore里面进行 >>> 根据 page 场景加载对应需要的 组件(pageComStore 存储 创建 组件,组件从本地配置文件获取,根据page 所属 产品线id从本地配置文件获取 需要生成的组件)。创建对应组件(NSClassFromString),并对组件所属产品线找到对应dataSource进行绑定、场景delegate绑定。《此处注意,组件创建于先关page 、data绑定、监听、page与组件透传、都是在GPageComStore.h这个类中进行》
- 创建组建时候,对应key-value 存储在在字典中。对组件添加 事件白名单(组件调起时机<常见VC的5个时机viewwill,viewdidappear、viewdidload、、、产品线变更、用户退出等> 时机为key,需要此时机调起的组件数组为value)
- 组件与page绑定。page通过category形式对当前场景下的组件进行扩展,扩展后,将组件定义的协议在扩展的对应组件场景中实现,由此也就实现了 组件A 与 组件B 通过 page 进行通信的功能。这样写的好处,是可以将组件 解耦 ,降低组件之间耦合,提供复用性。
- dateSource也与组件 之间进行绑定,data扩展也是以组件扩展,内部主要实现的是,对应组件所需要的数据。
学习点滴
最新推荐文章于 2019-02-12 19:56:09 发布