Передача имени селектора в качестве параметра метода - PullRequest
0 голосов
/ 23 февраля 2012

Я пишу собственный вспомогательный метод, который будет много привыкать и возвращать несколько кнопок. Каждая кнопка, конечно, будет иметь свой собственный селектор цели при нажатии, и я хочу передать селектор в качестве параметра в этот метод, чтобы у возвращаемой кнопки был указанный селектор.

Но я не уверен, как передать селектор в качестве параметра метода. Примерно так:

-(returnedInstance)someMethod:(WhatClass?*)selectedFunction{

[SomeClassWithASelectorParameter method:whatever selector:@selector(selectedFunction)];

}

где selectedFunction - параметр, переданный в метод.

Я пытался сделать WhatClass?* NSString, а также SEL, но это привело к:

[NSInvocation invocationWithMethodSignature:]: аргумент сигнатуры метода не может быть nil

Ответы [ 2 ]

4 голосов
/ 23 февраля 2012

Почему бы вам просто не передать SEL? то есть селектор. Вот так:

-(returnedInstance)someMethod:(SEL)selectedFunction{
    [SomeClassWithASelectorParameter method:whatever selector:selectedFunction];
}

В качестве альтернативы NSSelectorFromString:

-(returnedInstance)someMethod:(NSString*)selectedFunction{
    [SomeClassWithASelectorParameter method:whatever selector:NSSelectorFromString(selectedFunction)];
}
1 голос
/ 23 февраля 2012

Вы хотите использовать SEL, и когда вы ссылаетесь на него, вам не нужно использовать selector:

-(returnedInstance)someMethod:(SEL)selectedFunction{

    [SomeClassWithASelectorParameter method:whatever selector:selectedFunction];

}
...