2013-07-03 7 views
5

Jeśli oświadczam i niekompletnie wdrożyć mój własny protokół stosując następujący kod w Xcode:Dlaczego Xcode 4 nie wyświetla ostrzeżenia o mojej niepełnej implementacji protokołu UITableViewDataSource?

SomeProtocol.h:

@protocol SomeProtocol <NSObject> 

@required 

-(void)someRequiredMethod; 

@end 

SomeImplementor.h:

#import "SomeProtocol.h" 

@interface SomeImplementor : NSObject <SomeProtocol> 

@end 

SomeImplementor.m:

#import "SomeImplementor.h" 

@implementation SomeImplementor { // I get a warning on this line 

} 

@end 

Następnie Xcode generuje ostrzeżenie na linii SomeImplementor.h @implementation, który brzmi następująco:

Niepełna realizacja.

Metoda "someRequiredMethod" w protokole nie zaimplementowana.

Jednak gdybym niekompletnie wdrożenia protokołu z UITableView.h UITableViewDataSource z następującego kodu ...

SomeClass.h:

@interface SomeClass : NSObject <UITableViewDataSource> 

@end 

SomeClass.m :

#import "SomeClass.h" 

@implementation SomeClass { // I think I should get a warning here, but I don't 

} 

@end 

... potem Xcode jest w porządku z nim, a nie wyświetla ostrzeżenie w dowolnym miejscu, choć wyraźnie nie zostały wdrożone następujące metody z protokołem UITableViewDataSource:

@protocol UITableViewDataSource<NSObject> 

@required 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 

// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier: 
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls) 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

Dlaczego? Nie widzę żadnego powodu, aby te dwa przypadki traktować inaczej. (A ja chcę moje ostrzeżenia!)

+0

@MarkAmery Bardzo interesujące. Widzę te same wyniki. – rmaddy

+1

To pytanie jest duplikatem http://stackoverflow.com/questions/14038381/compile-warnings-about-missing-required-protocol-methods-not-appearing –

+2

@Jai: Ale zauważ, że to pytanie nie ma akceptowanej odpowiedzi, a to pytanie dodaje więcej cennych informacji. Więc polecam ** NIE **, aby zamknąć jako duplikat. –

Odpowiedz

3

Prawdopodobnie jest to błąd w Xcode 4.

Wydaje się być ustalona w Xcode 5, który ostrzega odpowiednio.

+1

Chciałbym mieć starą instalację Xcode z iOS 4 SDK. Jestem prawie pewien, że widziałem ostrzeżenia o niepełnej implementacji w podklasach UITableViewController. Ale to było dawno temu, więc nie jestem pewien, czy to się naprawdę wydarzyło, czy też to zrobię. –

Powiązane problemy