Tôi đang làm việc với lập trình socket.I chỉ muốn xóa một nghi ngờ liên quan đến mã tôi đã tải xuống từ - mobileorchard.com - Chatty. Trong khi R & D, tôi thấy một cuộc gọi chức năng trong ChatRoomViewController.m tập tinTại sao chúng ta gọi phương thức doesNotRecognizeSelector:?
[chatRoom broadcastChatMessage:input.text fromUser:[AppConfig getInstance].name];
khi tôi thấy trong Room.m tập tin, để thực hiện các cuộc gọi trên; đó là
- (void)broadcastChatMessage:(NSString*)message fromUser:(NSString*)name
{
// Crude way to emulate an "abstract" class
[self doesNotRecognizeSelector:_cmd];
}
i googled cho "doesNotRecognizeSelector:", theo Apple của nó để xử lý lỗi, trong đó nêu "Hệ thống runtime gọi phương pháp này bất cứ khi nào một đối tượng nhận được một thông báo aSelector nó không thể trả lời hoặc chuyển tiếp" câu hỏi của tôi là tại sao nhà phát triển gọi hàm broadcastChatMessage: fromUser: nếu nó không sử dụng ở đó và xử lý ngoại lệ "không tìm thấy bộ chọn" của phương thức nào?
Theo Stackovrflow, được sử dụng để tạo lớp trừu tượng, theo điều này Question, để tránh cảnh báo "Triển khai chưa đầy đủ".
Tôi vẫn không hiểu tại sao phương thức đó được sử dụng trong số Chatty Code, Vui lòng giúp tôi hiểu lý do tại sao phương thức đó được sử dụng.
Dường như nhà phát triển ứng dụng gốc đã cố gắng mô phỏng các tính năng của lớp cơ sở trừu tượng C++, trong trường hợp đó là không hợp lệ. Nó chỉ đơn giản là một hình thức cực đoan hơn làm cho các phương thức không làm gì hoặc trả về một giá trị giữ chỗ (thường là 0 hoặc NULL). – CodaFi