【问题标题】:Property, iVar, accessor method...?属性、iVar、访问器方法...?
【发布时间】:2012-09-25 08:35:02
【问题描述】:

我有几个在其中设置属性的类。

例如一个名为 MyDetailCell 的类,它是 UITableViewCell 的子类。

在其中我有一个类似于...的属性

@property SomeClass *someValue;

最初我使用它并将其存储在 setter 函数中...

- (void)setSomeValue:(SomeClass*)someValue
{
    _somValue = someValue;

    //do something with the _someValue object like changing text or something...
}

无论如何,我认为我实际上不需要存储发送的值,所以我只是这样做......

- (void)setSomeValue:(SomeClass*)someValue
{
    //do something with the _someValue object like changing text or something...
}

然后我更改为刚刚将 setter 传递给子视图的位置。像这样……

- (void)setSomeValue:(SomeClass*)someValue
{
    self.someSubView.someValue = someValue;
}

所以现在我不确定要使用什么。我现在根本没有真正保存财产,所以我想我真的不需要它。我不需要访问它来获取值,我只需要设置它。

目前我已将物业原样保留在那里。

  • 可以吗?
  • 这是不好的做法吗?
  • 我应该将其更改为仅使用 setter 方法吗?
  • 这样做有什么好处?

【问题讨论】:

    标签: iphone ios properties


    【解决方案1】:

    这样好吗?

    没有。

    这是不好的做法吗?

    是的。

    我应该把它改成一个 setter 方法吗?这样做有什么好处?

    我不明白你的意思。你写了“只是一个 setter 方法”,你还在 setter 方法中做了一些处理,这很好,但你做错了其他事情。一个是您不保留非委托对象-您应该保留。您不提供吸气剂-这也是一个错误的概念。可以有 readonly 和 readwrite 属性,但不能只写属性。

    【讨论】:

    • 对不起,我的意思是我应该只用一个公共方法替换该属性。该属性使用默认值(即强)。 getter 和 setter 方法不需要被覆盖。
    • @fogmeister 你可以做到,没什么特别的,真的。
    猜你喜欢
    • 2014-09-27
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多