学习点滴

  1. 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
    

  2. NSClassFromString来进行你不确定的类的初始化。 id myObj = [[MySepecialClass alloc]init];会报错、id myObj = [[NSClassFromString(@”MySepecialClass”) alloc]init];只是返回nil

    1. App 启动 先读取写死的各个 业务线,再分别读取各业务线中的产品线,业务线需要加载哪些产品线实在 businessIds 中添加,然后将 产品线与 业务线 kv 形式对应 保存起来,加载page时候就知道当前是哪个产品线,对应取哪个业务线dataSource绑定<一个业务线dataSource可以对应多个产品线>。 《 业务dataSource 与 产品线 互相对应关系 kv》
    2. basePage 场景下,根据view生命周期,进行相关组件 创建、绑定数据源、绑定场景、触发场景与com沟通、添加xpanel等。
    3. viewDidLoad下—>comStore里面进行 >>> 根据 page 场景加载对应需要的 组件(pageComStore 存储 创建 组件,组件从本地配置文件获取,根据page 所属 产品线id从本地配置文件获取 需要生成的组件)。创建对应组件(NSClassFromString),并对组件所属产品线找到对应dataSource进行绑定、场景delegate绑定。《此处注意,组件创建于先关page 、data绑定、监听、page与组件透传、都是在GPageComStore.h这个类中进行》
    4. 创建组建时候,对应key-value 存储在在字典中。对组件添加 事件白名单(组件调起时机<常见VC的5个时机viewwill,viewdidappear、viewdidload、、、产品线变更、用户退出等> 时机为key,需要此时机调起的组件数组为value)
    5. 组件与page绑定。page通过category形式对当前场景下的组件进行扩展,扩展后,将组件定义的协议在扩展的对应组件场景中实现,由此也就实现了 组件A 与 组件B 通过 page 进行通信的功能。这样写的好处,是可以将组件 解耦 ,降低组件之间耦合,提供复用性。
    6. dateSource也与组件 之间进行绑定,data扩展也是以组件扩展,内部主要实现的是,对应组件所需要的数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值