有人知道判断可选协议方法是否已实现的最佳方法吗.

我试过这个:

if ([self.delegate respondsToSelector:@selector(optionalProtocolMethod:)] )

其中代表是:

id<MyProtocol> delegate;

但是,我得到一个错误,说在协议中找不到函数respondsToSelector:

推荐答案

respondsToSelector:NSObject协议的一部分.将NSObject分为MyProtocol应该可以解决你的问题:

@protocol MyProtocol <NSObject>

@optional
-(void)optionalProtocolMethod:(id)anObject;

@end

Objective-c相关问答推荐

Objective C 中的 RSA 实现

当 UITextField 成为第一响应者时如何使 UIScrollView 自动滚动

CoreData:错误:无法在 NSManagedObject 类上调用指定的初始化程序

Objective-C 和 Cocoa 有什么区别?

定义缓存变量时在objective-c中使用static关键字

使用 CALayer 时无法编译代码

判断正在使用的应用程序版本

如果用户点击屏幕键盘,我如何关闭键盘?

如何正确获取文件大小并将其转换为 Cocoa 中的 MB、GB?

静态 NSString 使用与内联 NSString 常量

如何初始化 NSString 的数组?

在 Xcode 5 中运行代码覆盖时出现数十个profiling:invalid arc tag

在 iOS 中创建带有 URL 的 UIImage

如何编写 OS X Finder 插件

动画 UIButton 状态变化

从 UIImage 获取 Exif 数据 - UIImagePickerController

深入了解保留周期

Objective-c 协议前向声明

有没有办法在不使用 UINavigationController 的情况下更改 Storyboard 中 UINavigationBar 的高度?

iPhone SDK:如何在视图中播放视频?而不是全屏