0

我正在创建一个具有超过 1 种样式的自定义视图类。这意味着某些属性有时可能会被初始化,而另一些可能不会。只合成每次都会用到的属性是否明智?

例如:

这是它包含的属性:

@property (nonatomic, assign) NSUInteger style;
@property (nonatomic, retain) UIImageView *imageView;
@property (nonatomic, retain) UILabel *descriptionLabel;
- (id)initWithStyle:(NSUInteger)style;

如果样式为StyleDefault,则上述所有内容都将被初始化并使用。如果样式是StyleMinimal ,则只有 imageView 将被初始化和使用。

仅合成 imageView 是一种良好的内存管理做法吗?

4

3 回答 3

2

我认为您误解了合成属性的性质。

声明该属性不会为该属性创建内存,您可以自己执行此操作。Synthesizing 只是设置了 KVC 的 setter 和 getter——而对于现代版本的 Xcode,你甚至不需要这样做。

因此,在您的问题中 - 无论您合成可能会或可能不会使用的属性,这对您的应用程序的内存使用没有影响。

于 2013-03-12T16:06:53.747 回答
1

最近的编译器版本将自动合成您的属性。它们都应该用 nil 值初始化,因此在尝试访问代码中的这些属性时请记住这一点。

于 2013-03-12T16:02:50.957 回答
0

如果您已经创建了属性(XCode4.3 及以下编译器),那么您应该合成它,否则您会收到警告消息。

在 XCode4.4+ 编译器中,您无需显式合成,编译器会为您完成。所以你不能在那里做任何事情

于 2013-03-12T16:04:24.257 回答