我正在创建一个包含多个样式的自定义视图类。这意味着某些属性有时可能会被初始化,而有些属性可能不会被初始化。仅合成每次都会使用的属性是明智的吗?
例如:
这是它包含的属性:
@property (nonatomic, assign) NSUInteger style;
@property (nonatomic, retain) UIImageView *imageView;
@property (nonatomic, retain) UILabel *descriptionLabel;
- (id)initWithStyle:(NSUInteger)style;
如果样式为 StyleDefault ,则会初始化并使用上述所有内容。如果样式为 StyleMinimal ,则只会初始化并使用imageView。
仅合成imageView是一个很好的内存管理实践吗?
答案 0 :(得分:2)
我认为你误解了合成属性的本质。
声明属性不会为该属性创建内存,您可以自己创建。合成只是设置KVC设置器和getter - 使用现代版本的Xcode,你甚至不需要这样做。
因此,在您的问题中 - 无论您是否合成可能使用或未使用的属性,对应用程序的内存使用都没有任何影响。
答案 1 :(得分:1)
最近的编译器版本将自动合成您的属性。它们都应该使用nil值进行初始化,因此在尝试访问代码中的这些属性时请记住这一点。
答案 2 :(得分:0)
如果你已经创建了属性(XCode4.3编译器及以下版本),那么你应该合成它,否则你会收到警告信息。
在XCode4.4 +编译器中,您无需显式合成,编译器也适合您。所以你不能做任何事情