Tôi muốn sử dụng một bộ chọn trên một cá thể NSObject mà không cần một giao thức được triển khai. Ví dụ: có một phương thức thể loại nên đặt thuộc tính lỗi nếu đối tượng NSObject được gọi là hỗ trợ nó. Đây là mã và mã hoạt động như dự định:
if ([self respondsToSelector:@selector(setError:)])
{
[self performSelector:@selector(setError:) withObject:[NSError errorWithDomain:@"SomeDomain" code:1 userInfo:nil]];
}
Tuy nhiên, trình biên dịch không thấy bất kỳ phương thức nào xung quanh với chữ ký setError: vì vậy nó đưa ra một cảnh báo cho mỗi dòng có chứa @selector(setError:)
đoạn mã:
Undeclared selector 'setError:'
Tôi không muốn phải khai báo một giao thức để loại bỏ cảnh báo này, vì tôi không muốn tất cả các lớp có thể sử dụng giao thức này để thực hiện bất cứ điều gì đặc biệt. Chỉ bằng quy ước tôi muốn họ có một setError:
phương pháp hoặc tài sản.
Đây có phải là có thể làm được? Làm sao?
Chúc mừng,
EP