Chỉ cần bắt đầu với việc phát triển iPhone và Objective-C.Khi nào sử dụng dấu hai chấm với @selector
Hôm qua tôi đã cố gắng để addObserver cho một thông báo trong một cái nhìn của tôi, và tôi vẫn tiếp tục nhận được lỗi này:
unrecognized selector sent to instance
tôi theo dõi nó xuống đến một thực tế rằng tôi cần phải bao gồm đại tràng trailing đến tôi đối số bộ chọn:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(nameOfMySelector:) name:@"BBLocationServicesAreDisabled" object:nil];
Hôm nay, tôi đã thông minh vì khi thiết lập đối số hành động cho nút, tôi nhớ lỗi lầm của mình hôm qua và thêm dấu hai chấm vào đối số hành động. Đối số hành động có một @selector, giống như đối số bộ chọn trong khi thiết lập một người quan sát cho một NSNotification, vì vậy tôi đã hình dung rằng tôi đang làm đúng.
Tuy nhiên, với đoạn mã sau:
[self.callToActionButton addTarget:self action:@selector(nameOfMySelector:) forControlEvents:UIControlEventTouchUpInside];
Tôi nhận được cùng một lỗi chính xác:
unrecognized selector sent to instance
gì cho? Tại sao một @selector yêu cầu dấu hai chấm, và cái kia thì không? Các quy tắc tôi nên làm theo là gì khi nó nên được bao gồm và khi nào nó nên được để lại, và tại sao tôi không thể tôi luôn luôn chỉ làm một hay khác?
Cảm ơn!
Đó là dấu hai chấm, không phải là dấu chấm phẩy. Dù sao, nguyên mẫu của phương thức 'nameOfMySelector:' của bạn là gì? Loại đối số nào nó muốn? – BoltClock
Bạn cũng đang đề cập đến cùng một phương pháp trong cả hai trường hợp? – BoltClock
Ha! Một sự giám sát về phía tôi; Tôi đã chỉnh sửa bài viết để chỉ chúng như là dấu hai chấm. – djibouti33