Skip to content

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

@Dast1Woop

Description

@Dast1Woop

现在宏定义为:
/**

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions