UI进阶之彩票项目

第一课

1.runtime机制


#import <objc/runtime.h>
    unsigned int outCount = 0;
    
   Ivar *ivars =  class_copyIvarList([UIGestureRecognizer class], &outCount);
    for (int i = 0; i<outCount; i++) {
//        ivars[i];
        // 获取成员属性的名字
     NSString *name = @(ivar_getName(ivars[i]));
        NSLog(@"%@",name);
        
    }

2.initialize

// 什么时候调用 当第一次初始这个类的时候调用,如果当这个类有子类会调用多次
// 作用 初始化这个类
 if (self == [XMGNavigationViewController class]) {
 }

3.block的循环引用


    // block 防止循环应用
    // 你拥有我,我有用你
    // block 会对代码块里面的强制针强引用
    
//    __strong
//    __weak XMGSettingTableViewController *weakSelf = self;
    
    // typeof(x) 动态根据x判断x的真实类型
    
//    int a = 10;
//    typeof(1) b = 10;
//    
//    NSLog(@"a %d b %d",a, b);
    
    __weak typeof(self) weakSelf = self;
    
    item11.operationBlock = ^{
//        UIViewController *vc = [[UIViewController alloc] init];
//        vc.title = @"dadfafd";
//        vc.view.backgroundColor = [UIColor yellowColor];
//        [weakSelf.navigationController pushViewController:vc animated:YES];
        
        // self -> _gruops
        // 在block中如果访问下划线的成员属性,会造成循环应用
        NSLog(@"%@",weakSelf.groups);
        
    };
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容