ฉันต้องการใช้ตัวเลือกบนอินสแตนซ์ของ NSObject โดยไม่จำเป็นต้องใช้โปรโตคอลที่นำมาใช้ ตัวอย่างเช่นมีวิธีหมวดหมู่ที่ควรตั้งค่าคุณสมบัติข้อผิดพลาดหากอินสแตนซ์ NSObject ที่เรียกใช้สนับสนุน นี่คือรหัสและรหัสทำงานตามที่ตั้งใจไว้:
if ([self respondsToSelector:@selector(setError:)])
{
[self performSelector:@selector(setError:) withObject:[NSError errorWithDomain:@"SomeDomain" code:1 userInfo:nil]];
}
อย่างไรก็ตามคอมไพเลอร์ไม่เห็นวิธีการใด ๆ รอบ ๆ ด้วย setError: ลายเซ็นดังนั้นมันทำให้ฉันเตือนสำหรับแต่ละบรรทัดที่มี@selector(setError:)
ตัวอย่าง:
Undeclared selector 'setError:'
ฉันไม่ต้องการประกาศโปรโตคอลเพื่อกำจัดคำเตือนนี้เพราะฉันไม่ต้องการให้ทุกคลาสที่สามารถใช้สิ่งนี้เพื่อใช้สิ่งพิเศษ เพียงแค่การประชุมฉันต้องการให้พวกเขามีsetError:
วิธีการหรือทรัพย์สิน
เป็นไปได้หรือไม่ อย่างไร?
ไชโย
สอี