【问题标题】:Objective-C: Cast super instance variable in subclass?Objective-C:在子类中转换超级实例变量?
【发布时间】:2011-10-07 16:54:06
【问题描述】:

在 Objective-C 中,在子类的定义中(可能在接口文件中),是否可以强制转换从超类继承的实例变量(ivar)?

我想这样做是因为我已将超类的 ivar 定义为 NSObject *session,并且我想将子类的 ivar 转换为 Facebook *session,这样我就不必每次发送时都转换它这是Facebook 实例响应但NSObject 实例不响应的消息。

【问题讨论】:

    标签: objective-c inheritance casting instance-variables ivar


    【解决方案1】:

    没有办法改变超类接口变量的类型,你可以做的一件事是添加一个getter方法,比如

    - (Facebook *) getSession {
    
       return (Facebook *)[self session];
    
    }
    

    【讨论】:

    • 我相信这就是为什么init方法是动态类型的(它们被声明为返回id)。
    • 是的,我声明了一个局部变量,例如Facebook *fbSession = (Facebook *)self.session,但您的方法更具可扩展性。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-05-07
    • 2015-05-29
    • 2013-02-02
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2013-03-01
    相关资源
    最近更新 更多