相关疑难解决方法(0)

将一个类的实例转换为Objective-C中的@protocol

我有一个对象(UIViewController),它可能符合也可能不符合我定义的协议.

我知道我可以确定对象是否符合协议,然后安全地调用该方法:

if([self.myViewController conformsToProtocol:@protocol(MyProtocol)]) {
    [self.myViewController protocolMethod]; // <-- warning here
}
Run Code Online (Sandbox Code Playgroud)

但是,XCode显示警告:

warning 'UIViewController' may not respond to '-protocolMethod'
Run Code Online (Sandbox Code Playgroud)

什么是防止此警告的正确方法?我似乎无法self.myViewController像一个MyProtocol班级一样.

protocols objective-c

96
推荐指数
2
解决办法
3万
查看次数

ObjC类对象是否符合协议?

有没有办法向编译器指示类对象是否符合协议?

据我所知,通过创建+(void)foo类方法,该类对象实例将这些方法作为实例方法.因此,只要我+(void)foo为所有必需的协议方法创建方法,我就可以让一个类对象充当委托.

我的问题当然是在类的头文件中,我只知道如何指示类的实例符合协议(通常是这种情况).所以,我发现最好的是像这样抛出类对象:

something.delegate = (id<SomethingDelegate>)[self class]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

相关但不同: ObjC:有没有"类协议"这样的东西?

syntax protocols class objective-c

19
推荐指数
2
解决办法
6968
查看次数

标签 统计

objective-c ×2

protocols ×2

class ×1

syntax ×1