Xcode 4.3 không cảnh báo về các phương thức chưa khai báo khi chúng tồn tại trong @implementation
hiện tại, đây là một tính năng mới tuyệt vời. Tuy nhiên, điều này gây ra sự cố trong một số trường hợp nhất định khi sử dụng dự án của tôi trên Xcode 4.2.Làm cho Xcode 4.3 cảnh báo về các phương thức không khai báo tồn tại trong @implementation
Làm cách nào để kích hoạt lại cảnh báo cho các phương pháp chưa khai báo?
Ví dụ:
@interface MashTun : NSObject
- (void)foo;
@end
@implementation MashTun
- (void)foo {
CGRect rect = [self smallRect];
NSLog(@"My Small Rect: %@", NSStringFromCGRect(rect));
}
- (CGRect)smallRect {
return CGRectMake(0, 0, 100, 100);
}
@end
Trong Xcode 4.2, điều này không:
warning: instance method '-smallRect' not found (return type defaults to 'id')
error: initializing 'CGRect' (aka 'struct CGRect') with an expression of incompatible type 'id'
tôi hoàn toàn hiểu được cảnh báo và lỗi trong Xcode 4.2 vì nó không cho phép việc tìm kiếm các phương pháp trong hiện tại @implementation
phạm vi. (Sửa chữa rất đơn giản: hoặc đặt phương thức smallRect
phía trên phương pháp foo
hoặc khai báo phương thức smallRect
trong danh mục hoặc tiêu đề.)
Nhưng làm cách nào để bật cảnh báo trong Xcode 4.3 để phát hiện lỗi này trước khi vượt qua nó cho đồng nghiệp chạy 4.2?
Tôi chưa cài đặt 4.3 nhưng vẫn có tùy chọn trong 'Cài đặt bản dựng' cho' Bộ chọn không khai báo '? điều này có ảnh hưởng gì không? –
Bạn sẽ nghĩ như vậy theo tên - nhưng đó là đề cập đến bằng cách sử dụng @selector (foo) và cho dù nó kiểm tra cho một phương pháp hiện có theo tên đó. –
Vâng, đây là một bước tiến tuyệt vời trong 4.3 và đồng thời một chút rắc rối. Nó đốt cháy tôi thường xuyên. Tin tốt là nó sẽ không quá lâu trước khi vấn đề biến mất cùng với mọi người nâng cấp (và cuối cùng chúng ta có thể ngừng phương thức khai báo trước một cách không cần thiết). –