Một đối tượng selector
cho phép bạn gọi một phương pháp mà bạn không biết tại thời gian biên dịch. Bạn chỉ cần biết tên của một phương thức như một chuỗi để gọi nó.
Khi tên của phương thức mà bạn đang gọi được biết đến tại thời gian biên dịch, việc sử dụng các bộ chọn sẽ phản tác dụng: mã trở nên ít có thể đọc được vì không có lợi thế rõ ràng. Khi bạn đang viết một thư viện cần gọi các phương thức trong mã khác được biên dịch riêng biệt với thư viện, các bộ chọn cung cấp một cách để tách hai đoạn mã. Ví dụ, nếu bạn đang viết một lớp hẹn giờ có thể gọi lại cho bạn khi một khoảng thời gian kết thúc, bộ hẹn giờ của bạn không biết tên của hàm cần gọi, vì vậy nó không thể viết một cái gì đó như thế này:
// We do not know if the function is called intervalHasExpired or something else
[target intervalHasExpired];
Nhưng nếu bạn chọn bộ hẹn giờ, bộ hẹn giờ sẽ có thể gọi lại cho bạn.
[myTimer scheduleWithTarget:self andSelector:@selector(myCompletion)];
cảm ơn câu trả lời nhanh .. – QueueOverFlow