12

更新到 xcode 4.6 和 ios6.1 后,我收到这个新错误“'objectType' used as the name of the previous parameter 而不是作为选择器的一部分”。我多次得到这个。有任何想法吗?

PS:它显示的方法是反向地理编码的自定义方法。

-(void) getAddress: (NSString *) objectType: (CLLocationCoordinate2D) objectCoordinate
4

3 回答 3

24

它说这objectTypeNSString您的方法中对象的名称,而不是方法名称的一部分,不应将其用作objectType: (CLLocationCoordinate2D) objectCoordinate通常表示方法名称的一部分。

理想情况下你应该改变,

-(void) getAddress: (NSString *) objectType: (CLLocationCoordinate2D) objectCoordinate

更易读,

-(void) getAddress:(NSString *)objectType coordinate:(CLLocationCoordinate2D) objectCoordinate;

上述错误也可以通过objectType在方法定义中和下一个参数之间放置一个空格来修复(例如:-)-(void)getAddress:(NSString *)objectType : (CLLocationCoordinate2D)objectCoordinate。注意后面的空格objectType

更新:

要回答评论中的问题,您可以使用以下行来抑制这些警告:

#pragma clang diagnostic ignored "-Wmissing-selector-name"

将此添加到您的 pch 文件中。我不确定这是否适用于您来自图书馆的情况,但您可以尝试一下。查看此 clang-trunk以获取更多详细信息。

于 2013-01-29T07:20:24.203 回答
5

亲爱的,这都是关于间距的......正如@Martin R所说的那样:这个,有争议的更好的问题......

“在第二个参数之前插入一个空格就足够了。”

足够的意思,在这里,Xcode 关闭了地狱..

本着那种奇怪的语法琐事的精神......这是我最喜欢的 Cocoa 头文件,EVER。是的,这些都是有效的方法名称,呵呵。

@interface NSString (JASillyString)
-:a;
-:a :b;
-:a :b :c;
-:a :b :c :d;
-:a :b :c :d :e;
-:a :b :c :d :e :f;
-:a :b :c :d :e :f :g;
-:a :b :c :d :e :f :g :h;
-:a :b :c :d :e :f :g :h :i;
-:a :b :c :d :e :f :g :h :i :j;
-:a :b :c :d :e :f :g :h :i :j :k;
-:a :b :c :d :e :f :g :h :i :j :k :l;
-:a :b :c :d :e :f :g :h :i :j :k :l :m;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r :s;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r :s :t;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r :s :t :u;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r :s :t :u :v;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r :s :t :u :v :w;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r :s :t :u :v :w :x;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r :s :t :u :v :w :x :y;
-:a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r :s :t :u :v :w :x :y :z;
@end
于 2013-03-01T00:14:17.360 回答
0

您的方法是用空格声明选择器,

-(NSString *)testMethod:(double)price :(BOOL)flag;

注意提到 .h 和 .m 都是相同且相等的空格

当检索方法时,那个时候要小心方法及其参数。像 [self testMethod:4.5(space):TRUE];

于 2013-02-20T12:19:13.477 回答