Как использовать performSelector:withObject:afterDelay: с типами примитивов в Какао?

Просто добавьте немного больше, количество символов, возвращаемых printf(), может зависеть от спецификаторов параметров

ex:

int a= 0xff;
printf(" : %i characters\n" ,printf("%x",a)); //prints ff : 2 characters
printf(" : %i characters\n" ,printf("%d",a)); //prints 255 : 3 characters
96
задан user102008 24 May 2009 в 19:46
поделиться

5 ответов

Вот то, что я раньше называл тем, что я не мог изменить с помощью NSInvocation:

SEL theSelector = NSSelectorFromString(@"setOrientation:animated:");
NSInvocation *anInvocation = [NSInvocation
            invocationWithMethodSignature:
            [MPMoviePlayerController instanceMethodSignatureForSelector:theSelector]];

[anInvocation setSelector:theSelector];
[anInvocation setTarget:theMovie];
UIInterfaceOrientation val = UIInterfaceOrientationPortrait;
BOOL anim = NO;
[anInvocation setArgument:&val atIndex:2];
[anInvocation setArgument:&anim atIndex:3];

[anInvocation performSelector:@selector(invoke) withObject:nil afterDelay:1];
69
ответ дан 24 November 2019 в 05:40
поделиться

Просто заключите float, boolean, int или аналогичные в NSNumber.

Для структур я не знаю удобного решения, но вы можете создать отдельный класс ObjC, который владеет такая структура.

35
ответ дан 24 November 2019 в 05:40
поделиться

Возможно, NSValue , просто убедитесь, что ваши указатели все еще действительны после задержки (т. Е. Нет объектов, размещенных в стеке).

8
ответ дан 24 November 2019 в 05:40
поделиться

Можно просто использовать NSTimer для вызова селектора:

[NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(yourMethod:) userInfo:nil repeats:NO]
1
ответ дан 24 November 2019 в 05:40
поделиться

Возможно... хорошо, очень вероятно, я что-то упускаю, но почему бы просто не создать объектный тип, скажем NSNumber, как контейнер для переменной не-объектного типа, например CGFloat?

CGFloat myFloat = 2.0; 
NSNumber *myNumber = [NSNumber numberWithFloat:myFloat];

[self performSelector:@selector(MyCalculatorMethod:) withObject:myNumber afterDelay:5.0];
0
ответ дан 24 November 2019 в 05:40
поделиться