TFEasyCoder
TFEasyCoder copied to clipboard
能否考虑修改TF_LAZYLOAD_OBJC_CUS这个懒加载宏定义?(已创建pull request)
现在宏定义为: /**
- 懒加载属性,class 初始化方法为init,使用方法见github
- @param __CLASS 属性类型
- @param __PROPERTY 属性定义值
- @param __BLOCK 一个返回属性
- @return 属性
*/
#define TF_LAZYLOAD_OBJC_CUS(__CLASS,__PROPERTY,__BLOCK)
TF_SYNTHESIZE(__PROPERTY);
-(__CLASS *)__PROPERTY{
if (!_##__PROPERTY)
##__PROPERTY = [[__CLASS alloc]init];
__BLOCK(##__PROPERTY);
return _##__PROPERTY;}\
我在使用过程中发现,新手很容易在使用TF_LAZYLOAD_OBJC_CUS犯错:
比如设置按钮图片这种操作如果放在TF_LAZYLOAD_OBJC_CUS懒加载中,在其他地方修改图片后,在按钮getter方法被调用时又在TF_LAZYLOAD_OBJC_CUS的block中被初始化为初始图了!
大多情况下我们应该是不希望getter方法被调用时,重复之前的block设置。所以宏定义时,是否可以考虑把block代码用大括号括起来,样子大概改为如下形式:
#define TF_LAZYLOAD_OBJC_CUS(__CLASS,__PROPERTY,__BLOCK)
TF_SYNTHESIZE(__PROPERTY);
-(__CLASS *)__PROPERTY{
if (!_##__PROPERTY)
{
##__PROPERTY = [[__CLASS alloc]init];
__BLOCK(##__PROPERTY);
}
return _##__PROPERTY;}\
以下是现在遇到的问题不太好的解决方法: