目标 C - “方法的重复声明”编译错误

Mar*_*ark 3 methods objective-c signature

我有这段代码:

- (id) getSearchSuggestions:(NSString*)q;
- (NSOperationQueue*) getSearchSuggestions:(NSString*)q callback:(id<UserDelegate>)callback;
- (id) getSearchSuggestions;
- (NSOperationQueue*) getSearchSuggestions:(id<UserDelegate>)callback;
Run Code Online (Sandbox Code Playgroud)

我 Xcode 在最后一行不断向我显示一个错误:

Duplicate declaration of method "getSearchSuggestions"
Run Code Online (Sandbox Code Playgroud)

为什么?在我看来,签名都是不同的。

Rob*_*ier 5

这个签名:

- (id) getSearchSuggestions:(NSString*)q;
Run Code Online (Sandbox Code Playgroud)

与此签名相同:

- (NSOperationQueue*) getSearchSuggestions:(id<UserDelegate>)callback;
Run Code Online (Sandbox Code Playgroud)

所有对象指针都是id. 所以这两个都是获取一个对象并返回一个对象的方法。

更好的名字的例子是:

- (id)searchSuggestionsForQueryString:(NSString*)q; // Or ForTag, or whatever "q" is
- (NSOperationQueue*)searchOperationQueueForQuery:(NSString*)q callback:(id<UserDelegate>)callback;
- (id)fetchSearchSuggestions;
- (NSOperationQueue*)searchOperationQueueWithCallback:(id<UserDelegate>)callback;
Run Code Online (Sandbox Code Playgroud)

不太清楚为什么在这里返回操作队列,但这是您用于执行此操作的方法的名称。