我有一个名为“BaseEntry”的类,还有一些特定的类,如“EntryFoo”和“EntryBar”,它们是“基本条目”的子类。
现在有一个函数getEntry,它应该返回一个Object,它是BaseEntry的子类。在Java中这不是问题,但是我不知道如何在iOS的Objective-C中解决此问题。
谢谢你的帮助!
亚历克斯
最佳答案
在Objective-C中执行此操作的标准方法是仅返回类型为'id'的对象。在Java中将其视为Object
。但是,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];
关于ios - iOS:方法返回类型应为X类的子类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11841670/