Учитываяпротокол подклассов и соответствие
@protocol Response <NSObject>
@end
@protocol DataResponse <Response>
@end
@interface ListUsersResponse : NSObject <DataResponse>
@end
@interface RequestExecutor : NSObject
+(id<Response>) execute: (id<Request>) request receptor: (Class) model;
@end
ListUsersRequest * request = [self buildListUsersRequest];
ListUsersResponse * result = [RequestExecutor execute:request receptor:[ListUsersResponse class]];
я получаю Initializing 'ListUsersResponse *__strong' with an expression of incompatible type 'id<Response>'
ошибку. Почему это? Невозможно определить соответствие протокола компилятора? Как его решить?
Вы получаете сообщение об ошибке или предупреждение? Я думаю, что добавление приведения должно решить следующее: «ListUsersResponse * result = (ListUserResponse *) [RequestExecutor execute: request receptor: [ListUsersResponse class]]'. PS: вы имели в виду '+ (id) execute: (id ) request requestor: (Class) model;'? (ключевое слово 'id' отсутствует) –
Yaman
Да, предупреждение, извините. – 2014-09-25 13:27:26
Да, исправлено это. Спасибо, решает это. Кроме того, если я изменю id для id, проблемы исчезнут, я заинтригован почему. –
2014-09-25 13:30:47