このコードは Xcode 6.2 と 6.3 の間で変更されていませんが、次の行が含まれ[self alloc]
ているとエラーが発生します。
Multiple methods named 'initWithType:' found with mismatched result, parameter type or attributes
@implementation AGNetworkDataRequest
+ (instancetype)networkDataRequestWithType:(AGNetworkDataRequestType)type
{
AGNetworkDataRequest *r = [[self alloc] initWithType:type];//error here
return r;
}
- (id)initWithType:(AGNetworkDataRequestType)type
{
//typical init code
}
//...
呼び出しを Cmd + クリックすると、プロジェクトでまったく参照されていないオブジェクトである でinitWithType:
競合が表示されますが、iOS 8.3 で新しくなったに違いないと推測しています。CAEmitterBehavior
を に変更する[self alloc]
と[AGNetworkRequest alloc]
、このメソッドを継承するサブクラスは親オブジェクトを返すだけになり、このクラスの設計方法とは逆になります。
メソッド名を変更せずに競合を解消する方法はありますか (アプリ全体のすべてのメソッド呼び出しを変更する必要があります)。