iOS Objective-C 类型推断

560 阅读1分钟

使用__auto_type

// OC类型推断
#if defined(__cplusplus)
#define let auto const
#else
#define let const __auto_type
#endif

#if defined(__cplusplus)
#define var auto
#else
#define var __auto_type
#endif

测试代码

- (void)test {
    
    let aaa = 10;
    NSLog(@"%d", aaa);
    
    let str = @"hello world";
    NSLog(@"%@", str);
    
    NSArray<NSString *> *array1 = @[@"aaa", @"bbb", @"ccc"];
    let array2 = @[@"aaa", @"bbb", @"ccc"];
    NSLog(@"%@",array1);
    NSLog(@"%@",array2);
    
    NSDictionary<NSString *, NSNumber *> *dict1 = @{@"aaa": @1, @"bbb": @2};
    let dict2 = @{@"aaa": @1, @"bbb": @2};
    NSLog(@"%@",dict1);
    NSLog(@"%@",dict2);
    
    var label = [UILabel new];
    label.text = @"label";
    NSLog(@"%@", NSStringFromCGRect(label.frame));
    
    let frame = label.frame;
    let size = frame.size;
    NSLog(@"%@", NSStringFromCGSize(size));
    
    void (^block1)(NSArray *) = ^(NSArray *dataAry) {
        // Do something
    };
    let block2 = ^(NSArray *dataAry) {
        // Do something
    };
    block1(@[]);
    block2(@[]);
}

【参考】