Trong đoạn mã sau, lý do tại sao Xcode đề xuất "Sử dụng #selector thay vì xây dựng một Bộ chọn một cách rõ ràng" là gì?Sử dụng #selector thay vì xây dựng một Bộ chọn
// addButton = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.Add,
// target: self, action: #selector(FoldersMaintenanceVC.addButtonPressed))
addButton = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.Add,
target: self, action: Selector("addButtonPressed"))
self.navigationItem.leftBarButtonItem = addButton
func addButtonPressed()
{
myNslogSys2(self, funcName:#function)
}
Có một lỗ hổng trong việc này mặc dù. Nếu tôi cung cấp một lớp sai có một phương pháp hiện có nhưng mục tiêu dự định của tôi - tự, vv không có phương pháp hiện có này, nó sẽ sụp đổ vào thời gian chạy. – user523234
Tôi có thể làm gì nếu tôi muốn làm một cái gì đó như thế này: nếu responder! .respondsToSelector (Selector ("aMethod:")) == true {...} –
@KyleKIM Nếu aMethod đến từ một lớp hoặc một giao thức và là không phải là tùy chọn, có thể là một cái gì đó giống như 'nếu cho responder = responder như? Giao thức {responder.aMethod (value)} 'Hoặc ngược lại' nếu trả lời! .respondToSelector (#selector (Protocol.aMethod (_ :)) {...} ' – Valentin