#define LRWeakSelf(type) __weak typeof(type) weak##type = type;
如上面的这个宏,##是连接的作用, 即当使用上面的宏会把weak与输入的type值连接起来如下图:
LRWeakSelf(self);
weakself.view.backgroundColor = [UIColor whiteColor];
是用来连接上面的 weak和type, 所以拼接之后就直接成为了weakself
@#的使用, 我们添加一个普通的宏:
//随便写一个宏
#define LRToast(str) [NSString stringWithFormat:@"%@",str]
//这个宏需要这样写
LRToast(@"温馨提示");
NSLog(@"%@",LRToast(@"温馨提示"));
//随便写一个宏
#define LRToast(str) [NSString stringWithFormat:@"%@",@#str]
//这个宏需要这样写
LRToast(温馨提示);
//正常运行, 打印不会报错
NSLog(@"%@",LRToast(温馨提示));
我们可以看出来 LRToast(温馨提示);与LRToast(@"温馨提示");区别, 也就是说@#可以代替@"" 那么我们以后开发就省事了, 不用再添加@""了!