2011-11-11 21 views
5

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

8

đơ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 
+0

+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. –

1

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 
+2

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

+0

Cú pháp ưu tiên cho một phần mở rộng lớp riêng là '@interface MyClass()'. –

1

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 

Các vấn đề liên quan