iOS具有预先声明的属性,如下所示:
@property(nonatomic, readonly) UIInterfaceOrientation interfaceOrientation;
我可以为项目修改为@property(nonatomic) UIInterfaceOrientation interfaceOrientation;
,然后在我班级的不同控制器方法中为“interfaceOrientation
”变量分配不同的值吗?
如果修改现有属性,是否会产生问题?
此外,在谷歌搜索时,我在某处读到如果@property(非原子)未使用“readonly”关键字声明,则默认为读写。此规则是否仅适用于开发人员定义的属性,而不适用于预定义的属性?
答案 0 :(得分:1)
不,如果是只读,则有理由。要提供不同的行为,您应该对UIViewController
进行子类化并覆盖指定的方法[1] [2]:
- (NSUInteger)supportedInterfaceOrientations
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
答案 1 :(得分:1)
不幸的是,这是不可能的。由于Cocoa Touch是基于设计模式构建的(在我们的案例中是打开关闭原则,请参阅http://www.oodesign.com/open-close-principle.html的更多内容),这将违反其中一个。您可以添加更多功能/功能,但不能修改现有功能/功能。希望有所帮助