Передача BOOL в makeObjectsPerformSelector: withObject: - PullRequest
10 голосов
/ 21 марта 2011

Я хочу передать BOOL [NSArray makeObjectsPerformSelector:withObject:] в качестве параметра. Э.Г.

[buttons makeObjectsPerformSelector:@selector(setEnabled:) withObject: NO];

Приведенный выше код не будет работать, потому что withObject принимает только идентификатор.

Как правильно это сделать?

Я видел код с этим:

[buttons makeObjectsPerformSelector:@selector(setEnabled:) withObject: (id)kCFBooleanTrue];
[buttons makeObjectsPerformSelector:@selector(setEnabled:) withObject: (id)kCFBooleanFalse];

Отлично работает на симуляторе 4.2, но не работает на iphone 4.2.

Ответы [ 4 ]

10 голосов
/ 21 марта 2011

Вы можете написать категорию UIButton (или даже UIView), которая позволяет вам использовать setEnabled: с объектом.

@interface UIButton(setEnabledWithObject)
- (void)setEnabledWithNSNumber:(NSNumber *)bNum;
@end

@implementation UIButton(setEnabledWithObject)
- (void)setEnabledWithNSNumber:(NSNumber *)bNum {
    [self setEnabled:[bNum boolValue]];
}
@end

и тогда вы можете использовать

[buttons makeObjectsPerformSelector:@selector(setEnabledWithNSNumber:) withObject:[NSNumber numberWithBool:NO]];
[buttons makeObjectsPerformSelector:@selector(setEnabledWithNSNumber:) withObject:[NSNumber numberWithBool:YES]];
6 голосов
/ 24 ноября 2013

Я помню, что нужно было сделать что-то еще, кроме withObject:@YES, но, поскольку я больше не могу его найти, я понял, что это работает также с

[buttons enumerateObjectsUsingBlock:^(NSButton *item, NSUInteger idx, BOOL *stop) 
    {[item setEnabled:YES];}];

Или более быстрый / старый / читабельный :) способ:

for (NSButton *item in buttons) {[item setEnabled:YES];};

Нужно знать, что enumerateObjectsUsingBlock не особенно быстр, но в любом случае он не должен быть здесь огромным убийцей :) Если вы хотите быстро, вы также можете сделать это с помощью блока for (;;), конечно:)

3 голосов
/ 21 марта 2011
0 голосов
/ 11 декабря 2013

Если вы Передаете параметры BOOL в статическом , тогда мой ответ в link будет полезен ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...