2011-09-13 13 views
25

Có thể từ chối toàn bộ giao thức không? Tôi đang sử dụng trình biên dịch GCC được vận chuyển với iOS SDK 5.0 Beta 7.Tôi có thể từ chối toàn bộ giao thức bằng cách nào?

DEPRECATED_ATTRIBUTE dường như không hoạt động.

Ví dụ: hai câu lệnh sau không biên dịch.

  • @protocol DEPRECATED_ATTRIBUTE MyProtocol
  • @protocol MyProtocol DEPRECATED_ATTRIBUTE

Trả lời

49

Tôi đã không cố gắng này bản thân mình, nhưng tôi nghĩ rằng cú pháp sau nên làm việc.

__attribute__ ((deprecated)) 
@protocol MyProtocol 
@end 

Điều này song song với cú pháp không dùng toàn bộ giao diện cũng như phương pháp đơn lẻ.

__attribute__ ((deprecated)) 
@interface MyClass 
@end 

@interface MyClass2 
- (void) method __attribute__((deprecated)); 
@end 
+0

Huh. Hoàn toàn không nghĩ về điều đó. – Hyperbole

+11

Tôi nhận ra đây là cũ, nhưng cũng giống như một sidenote, như của các phiên bản Clang gần đây bạn có thể chỉ cần sử dụng: '' '__deprecated''' như viết tắt cho' '' __attribute__ ((deprecated)) '' '. – mszaro

+3

'__deprecated' không liên quan gì đến phiên bản clang. Nó được cung cấp bởi các tiêu đề hệ thống trong /usr/include/sys/cdefs.h. Bạn cũng có thể sử dụng '__deprecated_msg (" Một lưu ý cho các nhà phát triển sử dụng nó. ")' Và trình biên dịch in thông báo cùng với thông báo phản đối. –

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