升级到xcode 4.6和iOS 6.1后出错“用作上一个参数的名称而不是选择器的一部分”

时间:2013-01-29 07:10:25

标签: ios objective-c xcode xcode4.6 ios6.1

更新到xcode 4.6和ios6.1后,我得到这个新错误“'objectType'用作上一个参数的名称,而不是作为选择器的一部分”。我多次得到这个。有什么想法吗?

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

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

3 个答案:

答案 0 :(得分:24)

它表示objectType是方法中NSString对象的名称,而不是方法名称的一部分,不应该用作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文件中添加它。我不确定这是否适用于你来自图书馆的情况,但你可以尝试一下。查看this clang-trunk了解详情。

答案 1 :(得分:5)

所有关于间距,亲爱的 ......正如@Martin R所说的那样:debateably BETTER question ......

  

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

这里有足够的意义,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

答案 2 :(得分:0)

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

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

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

当采用反向方法时,那个时候要小心方法及其论点。 喜欢 [self testMethod:4.5(空格):TRUE];