Используя GCC __ неиспользованный атрибут с Objective C

Это работает для меня, когда я пытаюсь снова инициализировать modal.js после вызова reportsTable:

function refreshmodal(){
    //modal.js content
}
function reportsTable(){
    //.......codes
    refreshmodal();
}
15
задан Jason Coco 12 November 2008 в 22:19
поделиться

5 ответов

Хорошо, я нашел ответ... это, кажется, ошибка с реализацией gcc 4.0 Apple. Используя gcc 4.2 это работает как ожидалось, и надлежащее размещение следующее:

-(void)someMethod:(id) __unused someParam;

Это документируется в информацию о версии Objective C, если кому-либо интересно: http://developer.apple.com/releasenotes/Cocoa/RN-ObjectiveC/index.html#//apple_ref/doc/uid/TP40004309-DontLinkElementID_6

Как примечание, Ваш ответ скомпилирует, Louis, но поскольку я заявил в своем вопросе, что это ничего на самом деле не сделает или подавит неиспользованное предупреждение, выданное компилятором.

РЕДАКТИРОВАНИЕ: Я зарегистрировал отчет об ошибках с яблоком для этого rdar://6366051 .

18
ответ дан 1 December 2019 в 02:38
поделиться

Общая идиома должна использовать следующее:

#define UNUSED(x) (void)x
void SomeFunction(int param1, int param2)
{
  UNUSED(param2);
  // do stuff with param1
}

UNUSED(param2) оператор не генерирует объектного кода, устраняет предупреждения о неиспользуемых переменных и ясно документирует код как не использование переменной.

3
ответ дан 1 December 2019 в 02:38
поделиться

Я могу скомпилировать следующее очень хорошо:

- (NSString *) test:(__unused NSString *)test {
    return nil;
}

Редактирование: На самом деле это не может быть строго вещью дуги:

Phoenix-VI:CouchPusher louis$ cc -c Pusher.m -Wall -Werror
Phoenix-VI:CouchPusher louis$ cc -c Pusher.m -Wall -Werror  -Wunused-parameter
cc1obj: warnings being treated as errors
Pusher.m:40: warning: unused parameter ‘test’
Phoenix-VI:CouchPusher louis$ 

Так - Стена не включает не, включают - Wunused-параметр....

2
ответ дан 1 December 2019 в 02:38
поделиться

Я думаю, что можно использовать #pragma неиспользованное для маркировки аргументов как неиспользованные. Непротестированный, но можно попробовать что-то как

- (NSString *)test:(NSString *)test {
#pragma unused (test);
  return nil;
}
3
ответ дан 1 December 2019 в 02:38
поделиться

После некоторой борьбы с #pragma я обнаружил, что это

+ (NSString*) runQuery:(id)query name:(NSString*)name options:(NSDictionary*)options
{
#pragma unused(name)
 ...

}
1
ответ дан 1 December 2019 в 02:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: