2012-09-19 46 views
0

的iOS已经预先声明的属性按如下:我们可以修改iOS中的UIViewController属性吗?

@property(nonatomic, readonly) UIInterfaceOrientation interfaceOrientation; 

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

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

另外,虽然使用google搜索,但我在某处读到,如果@property(nonatomic)没有用“readonly”关键字声明,那么默认情况下它是可读写的。此规则仅适用于开发人员定义的属性,而不适用于预定义的属性?

回答

1

不,如果它是只读的,那么这是有原因的。为了提供不同的行为,你应该继承的UIViewController和覆盖指定的方法[1][2]

- (NSUInteger)supportedInterfaceOrientations 
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
+0

此外,虽然谷歌搜索,我知道如果一个@property(非原子)没有声明与“只读”关键字,然后其默认读写。此规则仅适用于开发人员定义的属性,而不适用于预定义的属性? –

1

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

+0

此外,虽然谷歌搜索,我在某地阅读,如果一个@属性(非原子)没有声明与“只读”关键字,然后其默认读写。此规则仅适用于开发人员定义的属性,而不适用于预定义的属性? –

+0

我想这个规则在所有情况下都是一样的。这是一种语言规则,iOS SDK的开发人员使用与我们所有人相同的语言 - Objective-C。希望这是有道理的 – ppalancica

相关问题