下面的代碼是僞代碼。 想象一下有一個類「水果」,它有一種工廠方法來創造水果。Objective-C基礎知識:子類和成員變量可訪問性
interface Fruit
{
}
+(Fruit*) createFruit:
{
return [[Fruit alloc] init autorelease];
}
現在我想子類的水果,以獲得一個蘋果:
interface Apple : Fruit
{
int iSeeds;
}
+(Apple*) createAppleWithColor: (int) iSeeds
{
Apple* oApple = [Apple createFruit:];
oApple.iSeeds = iSeeds;
return oApple;
}
問題:
- 我怎樣才能讓「iSeeds」不公開,不能從外部改變?如果我添加「私人」關鍵字,它不會再生成。
- 我仍然想從蘋果的工廠方法中設置iSeeds。
- 我希望用戶允許讀取iSeeds的內容。所以我想我應該有一個吸氣劑,但我不能讓它工作。我總是會得到一些關於「LValue任務」的錯誤。
- Fruit的createFruit正在使用autorelease。蘋果是否必須重新放置/釋放任何東西?
勒
的便捷構造通常只'fruit'。 – Chuck 2010-05-19 14:34:04
@Chuck,同意。我剛剛添加了一個鏈接去看看命名約定:) – 2010-05-19 14:36:04
我明白了。我仍然有很多東西需要學習。 關於命名約定:我得看看我能否和他們一起生活。我來自C#,目前我不願意接受這種晦澀的ObjectiveC風格,但最終我會採納它。 :-) 我什麼都不明白:「createAppleWithColor」是Apple類中的一種方法。爲什麼它不能訪問Apple的iSeed會員?在C#中,一個方法是靜態的並不重要,它仍然是類的成員。 – Krumelur 2010-05-21 18:08:03