Tôi có một đối tượng (một UIViewController) có thể có hoặc không phù hợp với giao thức mà tôi đã xác định.
Tôi biết mình có thể xác định xem đối tượng có tuân thủ giao thức hay không, sau đó gọi phương thức một cách an toàn:
if([self.myViewController conformsToProtocol:@protocol(MyProtocol)]) {
[self.myViewController protocolMethod]; // <-- warning here
}
Tuy nhiên, XCode hiển thị cảnh báo:
warning 'UIViewController' may not respond to '-protocolMethod'
Cách thích hợp để ngăn chặn cảnh báo này là gì? Tôi dường như không thể chọn self.myViewController
như một MyProtocol
lớp học.
id<MyProtocol> p = (id<MyProtocol>)self.myViewController;
Câu trả lời này và @andys đều đúng, nhưng câu trả lời của anh ấy đúng hơn .