我正在编写一些 Objective-C 代码,并且经常遇到必须使用类变量来存储一个值以供一次性使用的情况。吃完以后就不用了。对我来说,将此值存储在类变量中似乎是代码异味。实际上,该值应该作为参数传递给我正在使用的方法。
我通常在消费代表时遇到这个问题。例如,我有一个带有多个按钮的 UI,用于UIActionSheet
在点击它们时加载和显示 a。UILabel
此操作表包含一个日期选择器,该选择器为关闭操作表时的a 设置一个值。
- (IBAction)setPurchaseDateTapped {
self.activeField = purchaseDate;
[self loadDatePickerActionSheet:@"Edit Purchase Date"];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
self.activeField.text = value_from_UIActionSheet;
}
正如您在此处看到的,actionSheet clickedButtonAtIndex 回调不允许我传递,activeField
所以我必须使用类变量。写这个似乎更正确:
- (void)actionSheet:(UIActionSheet *)actionSheet parameterValue:(id)parameter {
parameter.text = value_from_UIActionSheet;
}
我相信(?)我可以继承 UIActionSheet 和 UIActionSheet 委托并添加我需要的签名,但这似乎比它的价值更多。
所以我的问题是做我想做的最好的方法是什么?
我不一定要更改我创建的日期选择器/操作表界面(尽管如果有更好的模式可以在 UIView 上设置多个日期同时保持 DatePicker 不碍事,我会全力以赴。)