__attribute__((deprecated))
là cách gcc (cũng được hỗ trợ trong clang ) để đánh dấu một hàm / phương thức là không được dùng nữa. Khi một thiết bị được đánh dấu là "không được dùng nữa", một cảnh báo sẽ được đưa ra bất cứ khi nào có bất kỳ ai gọi nó.
Cú pháp cho các hàm bình thường sẽ là
__attribute__((deprecated))
void f(...) {
...
}
__attribute__((deprecated("g has been deprecated please use g2 instead")))
void g(...) {
...
}
và phương pháp Objective-C sẽ là
@interface MyClass : NSObject { ... }
-(void)f:(id)x __attribute__((deprecated));
...
@end
Bạn cũng có thể đánh dấu cả lớp là không dùng nữa với
__attribute__((deprecated))
@interface DeprecatedClass : NSObject { ... }
...
@end
Apple cũng cung cấp <AvailabilityMacros.h>
tiêu đề cung cấp các macro DEPRECATED_ATTRIBUTE và DEPRECATED_MSG_ATTRIBUTE (msg) mở rộng đến các thuộc tính trên hoặc không có gì nếu trình biên dịch không hỗ trợ các thuộc tính. Lưu ý rằng tiêu đề này không tồn tại bên ngoài OS X / iOS.
Lưu ý bên cạnh đó, nếu bạn đang sử dụng Swift, bạn sử dụng @available
thuộc tính để phản đối một mục, ví dụ:
@available(*, deprecated=2.0, message="no longer needed")
func f() {
...
}