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!)
@MarkAmery Sehr interessant. Ich sehe die gleichen Ergebnisse. – rmaddy
Diese Frage ist ein Duplikat von http://stackoverflow.com/questions/14038381/compile-warnings-about-missing-required-protocol-methods-not-appearing –
@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. –