ฉันมีวัตถุ (UIViewController) ซึ่งอาจเป็นไปตามหรือไม่เป็นไปตามโปรโตคอลที่ฉันกำหนดไว้
ฉันรู้ว่าฉันสามารถตรวจสอบได้ว่าวัตถุนั้นสอดคล้องกับโปรโตคอลหรือไม่จากนั้นเรียกใช้เมธอดอย่างปลอดภัย:
if([self.myViewController conformsToProtocol:@protocol(MyProtocol)]) {
[self.myViewController protocolMethod]; // <-- warning here
}
อย่างไรก็ตาม XCode แสดงคำเตือน:
warning 'UIViewController' may not respond to '-protocolMethod'
อะไรคือวิธีที่ถูกต้องในการป้องกันคำเตือนนี้ ฉันไม่สามารถแคสต์self.myViewController
เป็นMyProtocol
ชั้นเรียนได้
id<MyProtocol> p = (id<MyProtocol>)self.myViewController;
คำตอบนี้และ @andys มีทั้งที่ถูกต้อง แต่ของเขามากขึ้นที่ถูกต้อง