Ошибка после обновления до xcode 4.6 и iOS 6.1 "используется как имя предыдущего параметра, а не как часть селектора"
После обновления до xcode 4.6 и ios6.1 я получаю эту новую ошибку "'objectType', которая используется как имя предыдущего параметра, а не как часть селектора. Я получаю это несколько раз. Любые идеи?
PS: метод, который он отображает, является настраиваемым для обратного геокодирования.
-(void) getAddress: (NSString *) objectType: (CLLocationCoordinate2D) objectCoordinate
Ответы
Ответ 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];