将变量声明为一个类,并使用另一个类为其分配内存有什么意义?

时间:2015-06-10 18:10:46

标签: ios objective-c declaration

例如:

UIImageView * imageView = [[MyCustomImageView alloc] init];

这样做有什么好处?为什么不呢?:

MyCustomImageView * imageView = [[MyCustomImageView alloc] init];

2 个答案:

答案 0 :(得分:4)

好处是您可以隐藏自己和外部的实施细节。

如果你要从一个方法中返回这个值,那么外面可能不关心它是什么样的图像视图 - 只要它是某种形式的!如果它是您正在创建的私有类,您甚至可能不希望将此类存在于外部。

在具有适当接口的其他语言中,这是一种更为人熟知的模式。 This article是一本很好的读物。

答案 1 :(得分:0)

两者都有重要用途。在这两种情况下,我都假设MyCustomImageView继承自UIImageView ...

UIImageView * imageView = [[MyCustomImageView alloc] init];

通过覆盖公共方法和属性以及仅覆盖公共方法和属性,可以使用其父对象的不同对象来扩展UIImageView的标准功能。例如,您可以通过在视图控制器中实现MyCustomImageView layoutSubviews或drawRect而不提供其他逻辑来提供完全不同的图像显示。

MyCustomImageView * imageView = [[MyCustomImageView alloc] init];

使用声明指向MyCustomImageView的指针,您可以覆盖公共方法并声明应用程序所需的新属性和方法,如invertImage,blinkImage等。