我们可以修改iOS中的UIViewController属性吗?

时间:2012-09-19 20:06:03

标签: ios cocoa-touch uiinterfaceorientation

iOS具有预先声明的属性,如下所示:

@property(nonatomic, readonly) UIInterfaceOrientation interfaceOrientation;

我可以为项目修改为@property(nonatomic) UIInterfaceOrientation interfaceOrientation;,然后在我班级的不同控制器方法中为“interfaceOrientation”变量分配不同的值吗?

如果修改现有属性,是否会产生问题?

此外,在谷歌搜索时,我在某处读到如果@property(非原子)未使用“readonly”关键字声明,则默认为读写。此规则是否仅适用于开发人员定义的属性,而不适用于预定义的属性?

2 个答案:

答案 0 :(得分:1)

不,如果是只读,则有理由。要提供不同的行为,您应该对UIViewController进行子类化并覆盖指定的方法[1] [2]

- (NSUInteger)supportedInterfaceOrientations
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

答案 1 :(得分:1)

不幸的是,这是不可能的。由于Cocoa Touch是基于设计模式构建的(在我们的案例中是打开关闭原则,请参阅http://www.oodesign.com/open-close-principle.html的更多内容),这将违反其中一个。您可以添加更多功能/功能,但不能修改现有功能/功能。希望有所帮助