古いコードをリファクタリングして、次のメソッドを変更したい:
- (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 がリリースされる前に発生する可能性があることに注意してください。