Objective-c Как отправить (void) в параметре? - PullRequest
0 голосов
/ 22 марта 2011

Я хотел бы знать, как я могу передать в параметре "адрес" пустоты?

- (void) showWithLabel:(id)method {

...
[HUD showWhileExecuting:@selector(method) onTarget:self withObject:nil animated:YES];

}


- (void) test:{
sleep(3)
}

- (void) hello:{

[self showWithLabel:(id)test]
}

Но это не работает (ошибка сборки)

Ответы [ 3 ]

4 голосов
/ 22 марта 2011

Чтобы передать селектор, вам понадобятся следующие ключевые слова:

@ селектор и SEL.

Итак, в вашем примере это должно быть:

- (void) showWithLabel:(SEL)method {

и

[self showWithLabel:@selector(test)]

Для вызова селектора: [target executeSelector: метод]

Как указывает Куби, вы должны быть очень осторожны с толстой кишкой. Нет двоеточия, если нет параметра. НО, если у вас есть параметры, вы должны понимать, что двоеточие является частью имени селектора. Например:

-(void) test //no parameter gives @selector(test)

-(void) testWithName:(NSString*)name //1 parameter gives @selector(testWithName:)

-(void) testWithName:(NSString*)name andAge:(int)age //2paramater gives selector gives @selector(testWithName:andAge:)
2 голосов
/ 22 марта 2011

Нет такой вещи как "пустота".void - это ключевое слово C, которое при применении к указателю означает, что указатель не типизирован, то есть тип неизвестен или не важен.Недавно я заметил, что некоторые новички, похоже, называют метод или функцию void (то есть метод или функцию, которая не возвращает значение) как «пустоту», но это не обычное использование.

Я не могу сказать из кода, который вы опубликовали, что вы хотите передать или где вы хотели бы передать.Не могли бы вы пересмотреть свой вопрос, чтобы сделать его более понятным?

1 голос
/ 22 марта 2011

Также обратите внимание, что я удалил двоеточия в ваших test и hello методах.В Obj-C двоеточие определяет параметры метода, и поскольку у вас не было параметров, вам не нужны двоеточия.

- (void) showWithLabel:(SEL)method {
    //...
    [HUD showWhileExecuting:method onTarget:self withObject:nil animated:YES];
}


- (void) test {
    sleep(3)
}

- (void) hello {
    [self showWithLabel:@selector(test)]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...