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

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

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

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

person snksnk    schedule 29.01.2013    source источник


Ответы (3)


В нем говорится, что 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. Я не уверен, что это сработает для вашего случая, когда оно взято из библиотеки, но вы можете попробовать. Проверьте этот clang-trunk для более подробной информации.

person iDev    schedule 29.01.2013
comment
Если методы принадлежат вам, вы можете внести эти изменения и исправить предупреждение. Есть ли у вас какие-либо предложения о том, что делать, если предупреждения приходят из библиотеки, которую вы используете? Какие-нибудь настройки сборки, с которыми вы сталкивались, может быть? - person Guven; 31.01.2013
comment
@Guven, не уверен, что это сработает, но вы можете попробовать с #pragma clang diagnostic ignored "-Wmissing-selector-name” в своем файле pch. Обновил мой вопрос. - person iDev; 31.01.2013
comment
Исправление: Обновлен мой ответ. - person iDev; 31.01.2013
comment
@ABC, у вас есть так называемая умная цитата в конце pch #pragma. - person Tony Adams; 01.04.2013

Все дело в интервале, дорогая... как сказал @Martin R: это, спорно ЛУЧШЕГО вопроса...

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

Здесь достаточно смысла, чтобы 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
person Alex Gray    schedule 01.03.2013

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

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

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

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

person Jack Patoliya    schedule 20.02.2013