2010-05-17 27 views
8

Tương tự như Ben Gottlieb's question, tôi có một số cuộc gọi không được chấp nhận đang làm phiền tôi. Có cách nào để ngăn chặn các cảnh báo bằng đường không? Ví dụ:Ngăn chặn cảnh báo trình biên dịch mã XCode cụ thể

if([[UIApplication sharedApplication] 
    respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) { 

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} else { 
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; //causes deprecation warning 
} 

Tất cả những gì tôi quan tâm là dòng đó. Tôi không muốn tắt tất cả cảnh báo không dùng nữa. Tôi cũng không muốn làm điều gì đó như suppress specific warnings by file.

Đã có một vài trường hợp khác mà tôi muốn gắn cờ một dòng cụ thể như bình thường ngay cả khi trình biên dịch tạo ra cảnh báo. Về cơ bản, tôi muốn cho nhóm của tôi biết rằng vấn đề đã được xử lý và ngừng nhận được nhiều lời phàn nàn về cùng một dòng.

Trả lời

5

Vincent Gable đã đăng một giải pháp thú vị. Nói tóm lại:

@protocol UIApplicationDeprecatedMethods 
- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated; 
@end 

if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) { 
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} else { 
    id<UIApplicationDeprecatedMethods> app = [UIApplication sharedApplication]; 
    [app setStatusBarHidden:YES animated:NO]; 
} 
+0

mát. Tôi đoán nó hoạt động để né tránh những cảnh báo không dùng nữa. Tuy nhiên, câu hỏi trừu tượng hơn vẫn còn mở. Có cách nào để ngăn chặn một cảnh báo cụ thể trong XCode không? – MrHen

+1

Thật không may, nó hầu hết là tất cả hoặc không có gì. Thông qua việc sử dụng '#pragma GCC diagnostic ...' (http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html), bạn có thể tắt cảnh báo cụ thể trên cơ sở từng tệp trong một cách rõ ràng hơn so với cài đặt xây dựng mỗi tệp. Nó yêu cầu GCC 4.2+ và phải được đặt ở trên cùng của đơn vị dịch thuật. –

+1

@ matt-b FYI, tôi nghĩ rằng tôi đã tìm thấy một cách tốt hơn để đối phó với các cảnh báo không dùng nữa. Nếu tôi cast UIApplication thành (id) thì lỗi sẽ biến mất. Bạn có thể nghĩ ra một lý do nào đó không đúng không? – MrHen

0
if([[UIApplication sharedApplication] 
    respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) { 

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} else { 
    [(id)[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; 
} 
Các vấn đề liên quan