使用方法和属性有啥区别?

Posted

技术标签:

【中文标题】使用方法和属性有啥区别?【英文标题】:What is the difference between using a method and a property?使用方法和属性有什么区别? 【发布时间】:2010-11-09 10:08:29 【问题描述】:

我正在研究“元素”示例应用程序的源代码,我看到在AtomicElement.h 中有四个属性声明为只读:

@property (readonly) UIImage *stateImageForAtomicElementTileView;
@property (readonly) UIImage *flipperImageForAtomicElementNavigationItem;
@property (readonly) UIImage *stateImageForAtomicElementView;
@property (readonly) CGPoint positionForElement;

在实现文件中,它们看起来像

- (UIImage *)stateImageForAtomicElementTileView 
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@_37.png",state]];

您能否详细说明这样做的原因?为什么不使用类似的东西

- (UIImage*) stateImageForAtomicElementTileView;

在头文件中,然后像[element stateImageForAtomicElementTileView];而不是element.stateImageForAtomicElementTileView一样访问它?

【问题讨论】:

【参考方案1】:

我认为选择一个习语而不是另一个习语没有技术原因,它们都可以以相同的方式使用。这更多的是语义问题。

一个类既拥有数据又可以执行操作(通常在所述数据上)。我认为您应该考虑使用属性,并使用. 访问而不是[ ] 更多地作为记录stateImageForAtomicElementTileView 用途的一种方式。

这是一个图像,是类的一部分(事实不是从资源动态生成的,应该被视为实现细节)

【讨论】:

很好,我对这个答案很满意 :)

以上是关于使用方法和属性有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

属性和实例变量有啥区别?

angularjs中的`value`属性和`ng-value`属性有啥区别

C#中的方法与属性-有啥区别[重复]

aria-label 和 title 属性有啥区别?

MongoDB:文档、记录和属性之间有啥区别?

svg 的 x 和 dx 属性有啥区别?