Tôi sắp xếp các phương pháp của mình thành các nhóm bằng cách sử dụng đánh dấu #pragma khi triển khai. Nhưng đôi khi, mã triển khai phương thức xuất hiện bên dưới mã gọi phương thức này và tôi nhận được cảnh báo "Phương pháp không tìm thấy phương pháp". Nó xảy ra khi tôi đang sử dụng phương pháp riêng. Cách khắc phục điều đó?Làm thế nào để thực hiện một tuyên bố về phía trước cho phương pháp riêng tư?
Trả lời
đơn giản nhất phương pháp là sử dụng một loại vô danh. Thêm một cái gì đó như thế này để phía trên cùng của tập tin .m
của bạn, trước khi @implementation
của bạn:
@interface MyClass()
- (void)myPrivateMethod;
@end
Trong trường hợp này, bạn sẽ sử dụng tiện ích mở rộng lớp bên trong tệp triển khai của bạn để xác định các phương pháp này. Theo cách này, API 'công khai' của bạn vẫn được xác định trong tệp tiêu đề của bạn và tệp triển khai của bạn chứa định nghĩa về các phương thức giả riêng tư của bạn.
YourClass.m
@interface MyClass()
- (void)myPrivateMethod;
@end
@implementation MyClass
- (void)myPublicMethod
{
// This will not throw an error or warning
[self myPrivateMethod];
}
- (void)myPrivateMethod
{
// Do something
}
@end
Những bất lợi của việc sử dụng một thể loại được đặt tên là bạn cần một '@implementation MyClass (PrivateMethods)' tương ứng, nếu không bạn sẽ nhận được một cảnh báo. Chỉ cần sử dụng một danh mục ẩn danh. – DarkDust
Cú pháp ưu tiên cho một phần mở rộng lớp riêng là '@interface MyClass()'. –
Trong tập tin thực hiện Class.m của bạn, bạn có thể thêm một phần giao diện ngay từ đầu và tuyên bố chức năng riêng trong đó:
@interface YourClassName (private)
-(void)aPrivateMethod:(NSString*)aParameter;
...
@end
@implementation YourClassName
...
@end
- 1. Tuyên bố về phía trước trong C++ là gì?
- 2. Làm thế nào để xác định một phương pháp riêng
- 3. Tuyên bố thuộc tính lớp: riêng tư và công khai
- 4. Phương pháp mở rộng tương thích về phía trước
- 5. Làm thế nào để sử dụng Laravel Eloquent ORM để thực hiện một hoặc tuyên bố
- 6. tuyên bố một phương pháp luôn ném một ngoại lệ?
- 7. Khối so với phương pháp riêng tư?
- 8. Tuyên bố phương pháp "tĩnh" bất thường
- 9. Tuyên bố phương pháp chung của Java
- 10. Mục tiêu-C: typedef'd một khối, sử dụng nó trong một tuyên bố phương pháp. Làm thế nào để tôi thực hiện điều này?
- 11. về phía trước khai cho các giao diện Objective-C
- 12. Làm cách nào để giả lập một trường riêng tư?
- 13. tuyên bố về phía trước hoặc bên ngoài không hài lòng
- 14. Làm thế nào để giảm một tuyên bố hợp lý?
- 15. Làm thế nào để thực hiện một phương pháp chung cho phép trả về null và chấp nhận enum?
- 16. Làm thế nào để làm cho một cửa sổ Tkinter nhảy lên phía trước?
- 17. Làm thế nào để gỡ lỗi một Tuyên bố LINQ
- 18. thực hiện tuyên bố lợi nhuận
- 19. Làm cho các phương thức được ủy quyền riêng tư
- 20. Làm thế nào để bao gồm Tuyên bố với XElement.ToString()
- 21. làm thế nào để thực hiện không với nếu tuyên bố trong tay lái ember?
- 22. Làm thế nào để tôi thực hiện nếu tuyên bố trong Flex/bison
- 23. WCF: Làm thế nào để chỉ định AddressFilterMode.Any tuyên bố
- 24. Làm thế nào để nhanh chóng về phía trước một chi nhánh từ xa
- 25. Ý nghĩa của từ khóa 'riêng tư' trong Hợp kim? Ý nghĩa của tuyên bố 'enum'?
- 26. Tuyên bố chuyển tiếp sẽ không thực hiện
- 27. thực hiện javascsript cho vòng luân phiên về phía trước và lạc hậu
- 28. Làm thế nào để thực hiện một "kiểu cũ" phương pháp async awaitable
- 29. C++ Riêng tư có thực sự riêng tư không?
- 30. Có thể có phương pháp mở rộng riêng tư không?
+1 Trong số ba câu trả lời tương tự, câu trả lời của bạn là chính xác nhất. –