传递对象指针作为协议指针 [英] passing object pointer as protocol pointer

查看:52
本文介绍了传递对象指针作为协议指针的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

@protocol protoA <NSObject>
@end

@interface objA : NSObject<protoA> {
    @private
    }
@end

@implementation objA
@end

@protocol protoB <NSObject>
    -(void) foo: (id <protoA> *) par;
@end

@interface objB : NSObject<protoB> 
    -(void) foo: (id <protoA> *) par;
@end

@implementation objB
    -(void) foo: (id <protoA> *) par
    {
    //...
    }
@end

在其他一些类方法中,我是这样使用的:

in some other class method i use it this way:

objB *obj1 = [[objB alloc] init];
objA *obj2 = [[objA alloc] init];

[obj1 foo: obj2];

我有编译器错误:ARC 不允许将 Objective-C 指针隐式转换为 '__autoreleasing id*'

I have compiler error: "Implicit conversion of an Objective-C pointer to '__autoreleasing id*' is disallowed with ARC

获得此功能的正确方法是什么?

What is the proper way to do get this functionality ?

推荐答案

id 已经是一个指针类型,使用 id 而不是 id<协议>*.

id already is a pointer-type, use just id<Protocol> instead of id<Protocol>*.

这篇关于传递对象指针作为协议指针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆