【问题标题】:Call method on object itself在对象本身上调用方法
【发布时间】:2014-05-15 15:35:35
【问题描述】:

我正在尝试创建可以为各种不同属性配置 UILable 的方法。我也想使用相同的方法对其他一些 UILable 进行相同的配置。截至目前,我的代码如下所示。

-(UILabel *) setUpLabel:(UILabel *)label {
/* Label configuration code*/
}

我将这段代码称为如下

{...
    UILabel *lbl = [UILabel alloc] init];
    lbl = [self setUpLabel:lbl];
...}

我想知道是否可以以更好的方式完成。

提前致谢。

【问题讨论】:

  • 您可能不需要返回 UILabel,您对该 UILabel 实例所做的操作将持续返回给调用者
  • 凯文是对的。只需将您想要配置为参数的标签传递给 setUpLabel: 方法,配置就会在您传递给它的标签上进行。
  • 就个人而言,我会保留返回值,但删除传递的参数并将 alloc/init 移动到 setUpLabel 方法中。这样,您可以将标签声明压缩成一行 UILabel *lbl = [self setUpLabel];

标签: ios objective-c methods


【解决方案1】:

如果你想在同一个视图控制器中为多个标签重用它,这是一个很好的方法。

如果您想在不同的视图控制器之间共享该方法,一种常见的方法是创建一个包含这些方法的“主题”单例对象。或者您可以将该方法添加到 `UILabel 上的类别中。

【讨论】:

    【解决方案2】:

    Sumit,你的代码有点奇怪。您可以按照工厂模式创建标签,也可以通过引用传递所需的标签来进行配置。你正在做两者的混合......

    工厂:

    -(UILabel *) setUpLabel:(NSDictionary *)config {
        /* Label configuration code*/
    }
    
    UILabel *myLabel = [self setupLabel:config];
    

    通过引用传递:

    -(void) setUpLabel:(UILabel *)label {
    /* Label configuration code*/
    }
    
    UILabel *lbl = [UILabel alloc] init];
    [self setUpLabel:lbl];
    

    在这种情况下我会推荐第二个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      相关资源
      最近更新 更多