2012-09-19 45 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

相關問題