当前位置:  开发笔记 > IOS > 正文

为什么在没有实现的情况下在类别中声明方法?

如何解决《为什么在没有实现的情况下在类别中声明方法?》经验,为你挑选了1个好方法。

我正在阅读一个开源项目的源代码,我在实现文件中遇到了以下类别定义:

@interface QCView (Private)
- (void)_pause;
- (void)setClearsBackground:(BOOL)flag;
@end

起初我以为该setClearsBackground方法被添加QCView类定义中.但是当我搜索这个实现文件时,我发现没有一个setClearsBackground方法的实现(虽然这个消息被发送到QCView文件中的几个地方的实例).

为什么有人会在框架类上声明一个方法,QCView但是却没有在任何地方实现该方法?我唯一的猜测是,这是绕过编译器并调用未在QCView.h文件中声明的方法的一种方法.但这似乎不太可能,因为开发人员如何知道这种方法的实现甚至存在?



1> Nicholas Ril..:

开发人员可能使用类转储等工具来生成标题,列出框架实现的所有方法.如果您需要访问SPI并且没有其他选择,这非常有用.如果没有声明,Objective-C会对方法参数进行假设,除了生成警告之外,还可能会生成不正确的方法调用.

关于未来操作系统修订版中未记录的界面的所有常见警告均适用.至少,您应该检查对象是否响应该方法(-[NSObject respondsToSelector]).对于额外的偏执,您可以将调用包装在异常块中,以防方法保留但其行为已更改.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有