【问题标题】:How to assign object of one class to other in Objective-C?如何在Objective-C中将一个类的对象分配给另一个类?
【发布时间】:2010-02-11 09:00:29
【问题描述】:

如何将接口对象分配给协议对象? 我有一个协议A 和协议B。两种协议的所有方法都在 MyClass 中实现。如何限制只能访问协议 A 的方法和协议 B 的方法?编码是在 Objective-C for iPhone 应用程序中完成的。

【问题讨论】:

    标签: objective-c interface protocols


    【解决方案1】:

    在创建对象时,您可以这样做:

    id <protocolA> protocolAObject = [[MyClass alloc] init];
    

    现在,除非您使用显式强制转换,否则您不能使用 protocolB 方法。

    您还可以将 MyClass 类的对象转换为 protocolA 或 protocolB,如下所示:

    MyClass *myClassObject = [[MyClass alloc] init];
    id <protocolB> protocolBObject = (id <protocolB>) myClassObject;
    

    【讨论】:

    • 嘿... a 在 MyClass 中编写了您的代码并将其分配给 protocolB 的 obj。但是使用protocolB的对象[protocolBobject],我也可以访问其他协议的方法:(。但这不应该是这样吗??
    • 没有办法完全阻止这些方法。但是,如果您尝试在 protocolB 的对象上调用 protocolA 方法,您应该会收到编译器警告。
    • 好的...但是我可以访问:(...给我一些很好的链接来阅读它的语法,或者链接到示例程序
    • @Tom... 在您的第二条评论中,您提到 “如果您尝试在 protocolB 的对象上调用 protocolA 方法,您应该收到编译器警告",我收到了同样情况的警告,但如何将其限制为仅协议 B 的方法?有没有其他方法可以解决这个问题?
    猜你喜欢
    • 2017-01-25
    • 2012-01-06
    • 2018-01-04
    • 2016-06-24
    • 2022-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多