TFEasyCoder icon indicating copy to clipboard operation
TFEasyCoder copied to clipboard

能否考虑修改TF_LAZYLOAD_OBJC_CUS这个懒加载宏定义?(已创建pull request)

Open Dast1Woop opened this issue 7 years ago • 0 comments

现在宏定义为: /**

  • 懒加载属性,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;}\

以下是现在遇到的问题不太好的解决方法: 2017-05-27 17 15 01 2017-05-27 17 19 12

Dast1Woop avatar May 27 '17 09:05 Dast1Woop