2013-07-03 2 views
5

Wenn ich erklären und unvollständig mein eigenes Protokoll mit dem folgenden Code in Xcode implementieren:Warum gibt Xcode 4 keine Warnung über meine unvollständige Implementierung des UITableViewDataSource-Protokolls aus?

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 

Dann Xcode eine Warnung auf der @implementation Linie SomeImplementor.h wirft, die wie folgt lautet:

unvollständige Umsetzung.

Methode 'someRequiredMethod' im Protokoll nicht implementiert.

Allerdings, wenn ich das UITableViewDataSource Protokoll von UITableView.h mit dem folgenden Code nicht vollständig implementieren ...

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 

... dann ist Xcode mit ihm in Ordnung, und eine Warnung nicht überall angezeigt werden, obwohl ich eindeutig nicht die folgenden Methoden aus dem UITableViewDataSource Protokoll implementiert haben:

@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; 

Warum? Ich kann keinen Grund sehen, dass diese beiden Fälle anders behandelt werden sollten. (Und ich möchte, dass meine Warnungen!)

+0

@MarkAmery Sehr interessant. Ich sehe die gleichen Ergebnisse. – rmaddy

+1

Diese Frage ist ein Duplikat von http://stackoverflow.com/questions/14038381/compile-warnings-about-missing-required-protocol-methods-not-appearing –

+2

@Jai: Aber beachten Sie, dass diese Frage keine akzeptierte Antwort hat, und diese Frage fügt mehr wertvolle Informationen hinzu. Also würde ich empfehlen, ** NOT ** als Duplikat zu schließen. –

Antwort

3

Dies ist wahrscheinlich ein Fehler in Xcode 4.

Es scheint 5 in Xcode festgelegt werden, die Sie entsprechend warnt.

+1

Ich wünschte ich hätte eine alte Xcode Installation mit iOS 4 SDK. Ich bin ziemlich sicher, dass ich Warnungen über unvollständige Implementierung in UITableViewController-Unterklassen gesehen habe. Aber das war lange her, also bin ich mir nicht sicher, ob das wirklich passiert ist oder ob ich das erfinde. –

Verwandte Themen