objective-c - 从协议中删除函数时,有什么方法可以得到编译器错误/警告?
问题描述
@protocol MyProtocol
- (void)foo;
- (void)bar;
@end
@interface MyClass : NSObject < MyProtocol >
@end
@implementation MyClass
// My Protocol implementation
- (void)foo {
NSLog(@"foo implementation.");
}
- (void)bar {
NSLog(@"foo implementation.");
}
@end
现在假设我决定更改MyProtocol
和删除该功能foo
。override
如果我不删除 foo 的实现(类似于C++ 中的等效关键字),是否有任何机制会给我一个编译器错误/警告?
解决方案
如果您只是从协议中删除该方法,则没有任何迹象表明您应该从任何符合要求的类中删除相应的方法。这是因为没有办法知道给定的类恰好有一个同名的方法。
您可以做的是重命名您要删除的协议方法。给它起一个名字,保证在你的代码中不存在。
现在尝试构建。在任何试图符合协议的类中,您都会收到一些关于不符合的错误,因为它没有新重命名的协议方法。
从每个类中删除方法后,您可以从协议中删除重命名的方法。
推荐阅读
- .net-core - 如何将 serilog 中的日志写入 Linux 和 Windows 上的同一路径?
- c# - C# FFMPEG:代码错误并停止生成媒体文件
- docker - Docker:无法删除 macvlan 配置网络
- r - R 新手,专注于基于项目的学习。尝试一些应该很简单的事情,但在 ggplot2 中遇到了困难
- python - 在列的开头和结尾添加字符
- c# - 如何将不记名令牌传递到请求标头中
- javascript - HTML 输入变量覆盖 $_SESSION 变量 PHP
- path - 为什么 Fish 不能识别它可以在其路径中找到的程序?
- python - 尝试获取 vgg16 模型的输出会引发错误,要求使用 keras 模型 get_output_at
- docker - 停止 Synology 通知“Docker 容器意外停止”