IBAction から speechTime を渡し、0 までカウントダウンするタイマー アプリケーションを作成しました。5 つの異なる speechTimes と、スピーチ時間のカウントダウンを停止するトグル ボタンがあります。タイマーのカウントダウン中に IBAction が押されていないボタンを無効にできるようにしたいと思います (speechTime のリセットを防ぐため)。
現在、いくつかの [speechButton setEnable:NO] および [... setEnable:YES] 呼び出しがあり、それらはすべて期待どおりに機能します。しかし、メモリ管理が不十分で、非常に厄介なコードになっているのではないかと思います。すべてのボタンの NSSet のようなものを実装し、1 つのメソッドのみを使用してそれらを有効/無効にして、[ボタンを無効にする]/[ボタンを有効にする] になるようにしたいと思います。
私はこのようなもので遊んだ:
TimerViewController.h
@implement TimerViewController{
NSButton *buttonA, *buttonB, *buttonC;
}
@property (retain, readonly) NSSet *hijackableButtons;
-(void)disableButtons
@end
TimerViewController.m
...
@synthesize hijackableButtons;
-(void)init{
//blah blah blah
hijackableButtons = [NSSet setWithObjects:*buttonA,*buttonB,*buttonC,nil];
}
//...
-(void)disableButtons{
for (id buttons in hijackableButtons){
if (buttons isKindOfClass:[NSButton class]){
[buttons setEnabled:NO];
}
しかし、これはうまくいきません。任意の提案をいただければ幸いです!