objective-c 排他制御

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
べっきー

objective-c 排他制御

#1

投稿記事 by べっきー » 10年前

objective-cにて、ボタン1押下時にコールされる関数がmyAction1で
ボタン2押下時にコールされる関数がmyAction2の場合に
ボタン1押下時の処理Aが終わるまでは、ボタン2押下しても
処理Bが行われないようにするにはどのようにすればいいのでしょうか。

当方で思いつくのは、グローバル変数でフラグを持たせて
処理Aが終わるまではフラグをたてて、処理Bの前にそのフラグ
のチェックをするというぐらいしか思い浮かびません。

もう少しスマートでかっこいい方法があれば教えてください。

コード:

- (IBAction)myAction1:(id)sender {

  処理A;
}

- (IBAction)myAction2:(id)sender {
	
      処理B;
}

アバター
Justy
副管理人
記事: 122
登録日時: 10年前
住所: 神奈川県

Re: objective-c 排他制御

#2

投稿記事 by Justy » 10年前

べっきー さんが書きました:ボタン1押下時の処理Aが終わるまでは、ボタン2押下しても
処理Bが行われないようにするにはどのようにすればいいのでしょうか。
 普通に組めば処理Aが終るまで処理Bは実行されないはずですが、
それぞれのボタンのアクションをマルチスレッドにしてしまったってことですか?

 状況がよく理解できていませんがそういうことであれば、@synchronizedを使ってみてはどうですか?

べっきー

Re: objective-c 排他制御

#3

投稿記事 by べっきー » 10年前

文章の書き方がわるかったです。すみません。

アプリ起動後、ボタン1を一番はじめにおされるまでは、ボタン2を押しても蒸し続ける場合は
フラグ制御(ボタン1をおすとグローバル変数のフラグをたてる。ボタン2押下時、フラグ判定)
以外に処理はないでしょうか。

C言語ではフラグ制御もありだと思いますが、Objective-cで別にいい方法があればと
思ってます。

ご回答お願いします。

べっきー

Re: objective-c 排他制御

#4

投稿記事 by べっきー » 10年前

「訂正」蒸し→無視

です。

アバター
Justy
副管理人
記事: 122
登録日時: 10年前
住所: 神奈川県

Re: objective-c 排他制御

#5

投稿記事 by Justy » 10年前

べっきー さんが書きました:ボタン1を一番はじめにおされるまでは、ボタン2を押しても蒸し続ける場合は
フラグ制御(ボタン1をおすとグローバル変数のフラグをたてる。ボタン2押下時、フラグ判定)
以外に処理はないでしょうか。
 あー、すみません、そういう意味でしたか。

 であれば、最初はボタンそのものを非表示(setHidden:YES)、或いは不活性(setEnabled:NO)にしておき、
ボタン1が押されたら、表示(setHidden:NO)、或いは活性化setEnabled:YES)するのがベストだと思います。

べっきー

Re: objective-c 排他制御

#6

投稿記事 by べっきー » 10年前

setHiddenを利用することで問題解消しました。ありがとうございました。

べっきー

Re: objective-c 排他制御

#7

投稿記事 by べっきー » 10年前

解決に設定します。

閉鎖

“C言語何でも質問掲示板” へ戻る