【问题标题】:Indicating that the returned instance is a derived class表示返回的实例是派生类
【发布时间】:2016-10-20 10:04:02
【问题描述】:

我有一个函数,它返回从 RLMObject 派生的类的实例(可以返回不同的类实例,但都从 RLMObject 派生)

- (nullable RLMObject *)importObject:(nonnull NSDictionary *)object;

所以我目前使用它作为

Rating * realmObject = (Rating *)[self createOrImport:object];

但我知道有一种方法可以不用强制转换,只是暗示返回值是 RLMObject 的派生类,所以我可以像使用它一样

Rating * realmObject = [self createOrImport:object];

这可以通过 id 来完成,但我想更具体一点,而不是只使用 id...smth。作为

- (nullable derived RLMObject *)importObject:(nonnull NSDictionary *)object;

【问题讨论】:

  • 在每个派生类中,你可以重写importObject:并指定返回对象类,在里面调用[super createOrImport:object]?
  • 不,我记得有一个关键字是我偶然发现的,但找不到了
  • 魔法关键字是__kindof

标签: objective-c cocoa cocoa-touch


【解决方案1】:

__kindof 是神奇的关键字

- (nullable __kindof RLMObject *)importObject:(nonnull NSDictionary *)object;

因为故事板方法发现

- (__kindof UIViewController *)instantiateViewControllerWithIdentifier:(NSString *)identifier;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-14
    • 2023-03-19
    • 1970-01-01
    • 2014-08-29
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    相关资源
    最近更新 更多