Возможно ли в объекте c передать логическое значение по ссылке? У меня есть несколько логических свойств, которые мне нужно управлять, поэтому я хотел бы инкапсулировать переключение этих значений в одну функцию, которую я могу вызвать из каждого события нажатия кнопки. Вот один пример:Пропустить логическое значение по ссылке
@interface MyViewController()
@property (nonatomic) BOOL *sendEmails;
@end
Тогда в случае с UIButton
мыши, у меня есть вызов метода:
[self updateEmailPreference:self.sendEmails button:self.noEmailsCheckBox];
Что вызывает этот метод:
- (void) updateEmailPreference : (BOOL *) b
button : (UIButton *) button
{
if (*b) {*b = NO;}
else {*b = YES;}
if (*b) {
[button setBackgroundImage:[UIImage imageNamed:@"checked_checkbox"] forState:UIControlStateNormal];
} else {
[button setBackgroundImage:[UIImage imageNamed:@"unchecked_checkbox"] forState:UIControlStateNormal];
}
}
Но, к сожалению, это падает на блок if (*b)...
. Это возможно? Благодаря!
ваш код не имеет никакого смысла. 'if (b)' проверить указатель не null, 'if (* b)' проверить значение, на которое указывает указатель, вам нужно выяснить, какой из них использовать –
Выше будет работать, только если 'sendEmail' * указывает * на BOOL. –
Я не уверен, что это признанный шаблон obj-c. Вам лучше создать класс с булевыми в нем и передать этот класс взад и вперед как возвращаемое значение из вызовов методов. 'NSError' обычно передается, как вы предлагаете, но это все. – Aaron