Подтвердить что ты не робот

Ошибка после обновления до xcode 4.6 и iOS 6.1 "используется как имя предыдущего параметра, а не как часть селектора"

После обновления до xcode 4.6 и ios6.1 я получаю эту новую ошибку "'objectType', которая используется как имя предыдущего параметра, а не как часть селектора. Я получаю это несколько раз. Любые идеи?

PS: метод, который он отображает, является настраиваемым для обратного геокодирования.

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

Ответ 1

В нем говорится, что 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.

Update:

Чтобы ответить на вопрос в комментариях, вы можете использовать приведенную ниже строку для подавления этих предупреждений:

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

Добавьте это в свой файл pch. Я не уверен, что это будет работать для вашего случая, когда оно исходит из библиотеки, но вы можете попробовать. Чтобы узнать подробности, этот clang-trunk.

Ответ 2

Это все о расстоянии, дорогая... как @Martin R сказал re: this, дискуссивно ЛУЧШИЙ вопрос...

"Достаточно вставить пробел перед вторым параметром."

Достаточный смысл, здесь, что Xcode закрывает ад...

В духе этой нечетной части синтаксических мелочей... вот мой любимый заголовочный файл Cocoa, КОГДА-ЛИБО. и да, это все допустимые имена методов, хе-хе.

@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

Ответ 3

Ваш метод объявляет селектор с пробелами,

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

Обратите внимание на то, что .h и .m оба одинаковые и равные пробелы

При возврате метода, на этот раз осторожно о методе и его аргументах. как [self testMethod: 4.5 (пробел): TRUE];