objective-c – 通过引用传递布尔值
发布时间:2020-12-16 05:06:27 所属栏目:百科 来源:网络整理
导读:在目标c中是否可以通过引用传递布尔值?我有许多布尔属性需要管理,所以我想将这些值的切换封装到一个函数中,我可以从每个按钮单击事件中调用它.这是一个例子: @interface MyViewController()@property (nonatomic) BOOL *sendEmails;@end 然后在UIButton点
在目标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)…块上崩溃.这可能吗?谢谢! 解决方法
可能更好:
@interface MyViewController() @property (nonatomic) BOOL sendEmails; @end 对于方法调用: [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]; } } (请注意,在call语句中使用的变量可能存在混淆.如果它是属性,则必须使用ivar引用而不是dot限定属性,并且ivar名称必须具有_前缀或不具有取决于如何您的属性已声明.或者只使用局部变量,并根据需要将属性值复制到其中.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |