Có cách nào để cung cấp phương pháp triển khai thực hiện (mang cùng tên chính xác của một phương thức được định nghĩa bởi khung công tác) chỉ khi phương thức chưa được xác định trong hệ thống không? Ví dụ phương pháp [NSSomeClass someMethod:]
chỉ tồn tại trong Mac OS X 10.6 và nếu ứng dụng của tôi chạy ở 10.5, tôi sẽ cung cấp định nghĩa của phương thức đó trong danh mục. Nhưng khi ứng dụng chạy ở 10.6, tôi muốn phương thức do OS cung cấp để chạy.Điều chỉnh một phương pháp hệ thống thông qua các loại trong Mục tiêu-C?
Bối cảnh: Tôi đang tạo ứng dụng được nhắm mục tiêu cho cả 10.5 và 10.6. Vấn đề là gần đây tôi đã nhận ra rằng phương pháp +[NSSortDescriptor sortDescriptorWithKey:ascending:]
chỉ tồn tại trong 10.6 và mã của tôi đã được rải rác bởi cuộc gọi phương thức đó. Tôi có thể cung cấp một cài đặt mặc định cho nó (kể từ thời điểm này không quá khó để thực hiện nó bản thân mình), nhưng tôi muốn một "bản địa" một được gọi là bất cứ khi nào ứng dụng của tôi chạy trên 10.6. Hơn nữa, nếu tôi gặp phải các vấn đề tương tự trong tương lai (với các phương pháp khó thực hiện hơn), tôi có thể không có khả năng loại bỏ việc thay thế một lớp lót.
Câu hỏi này mơ hồ tương tự như Override a method via ObjC Category and call the default implementation? nhưng sự khác biệt là tôi chỉ muốn triển khai khi hệ thống chưa có.
Cảm ơn.
Phương thức tiếp cận thông minh +1 :) –
Đồng ý. Rất tốt đẹp thực sự. –