重构旧代码,我想更改以下方法:
- (id)initWithFrame:(CGRect)frame
{
// original logic
}
到:
- (id)initWithFrame:(CGRect)frame andDelegate:(id<myDelegateProtocol>)delegate
{
// original logic
if(delegate)
{
_delegate = delegate;
}
}
为了确保没有依赖代码中断,我更新了原始方法以引用旧方法,如下所示:
- (id)initWithFrame:(CGRect)frame
{
return [self initWithFrame:frame andDelegate:nil];
}
但是,如果有人仍在使用该原始方法,我希望 Xcode 发出警告(类似于 iOS 中的方法被弃用时)。理想情况下,类似:
- (id)initWithFrame:(CGRect)frame __warning__(@"This method has been replaced to ensure that you set the delegate. Please update your code.");
{
return [self initWithFrame:frame andDelegate:nil];
}
请注意,这些弃用可能会在新版本 iOS 发布之前发生。