2

「BaseEntry」というクラスと、「Base Entry」のサブクラスである「EntryFoo」や「EntryBar」などの特定のクラスがあります。

BaseEntry のサブクラスである Object を返す getEntry 関数があります。Java ではこれは問題になりませんが、iOS 用の Objective-C でこれを修正する方法がわかりません。

ご協力いただきありがとうございます!アレックス

4

2 に答える 2

3

Objective-C でこれを行う標準的な方法は、'id' 型のオブジェクトを返すことです。ObjectJavaのように考えてください。ただし、idキャストなしで戻り値を型指定された値に割り当てることができるという点で、少し優れています。

明確にするために、オプションは次のとおりです。

// Assuming -(BaseEntry*)getEntry;
id entry = [obj getEntry];
[entry messageOnlyOnFooEntry];

// Assuming -(BaseEntry*)getEntry; - note cast required
FooEntry *entry = (FooEntry*)[obj getEntry];
[entry messageOnlyOnFooEntry];

// Assuming -(id)getEntry; - no cast required
FooEntry *entry = [obj getEntry];
[entry messageOnlyOnFooEntry];
于 2012-08-07T16:19:25.227 に答える
0
BaseEntry gE = [[BaseEntry alloc] init]; // Allocate and init a BaseEntry object
returnGetEntryHere = [ge getEntry]; // This will execute getEntry which is a method in BaseEntry

今まで何か試したことはありますか?コードを投稿すると、Objective-cプロジェクトに関する誤解や欠点を他の人が手伝ってくれるかもしれません。

于 2012-08-07T16:10:03.413 に答える