私は2つのウィンドウでこのOSXアプリケーションを開発しています。 1つのウィンドウには、カスタムビューコントローラを備えたNSビューがあります。私は、ウィンドウコントローラがビューコントローラに伝える必要がある重要な情報を含むグローバル変数を持っています。残念ながら、これらのグローバル変数は変更できません。ユーザーがいくつかの項目を選択するNSPopUpButtonsが2つあることがわかります。これらのポップアップボックスのインデックスを取得し、これらの値をグローバル変数に割り当てます。または少なくとも私は望みますが、グローバル変数は変更されず、これらの変更をNSViewコントローラから読み取ることはできません。これらの変数を他のクラスに渡す最良の方法は何ですか?Objective Cのクラス間で変数を通信する
#import <Cocoa/Cocoa.h>
#import "gameView.h"
extern int gameOn; //variable managing if the game is running or not
extern int gameMode; //variable managing what game mode it is: 0:menu, 1: VS, 2: practice
extern int player1Type; //variable for storing selected player 1 character
extern int player2Type; //variable for storing selected player 2 character
は、最終的にビューコントローラ(gameView:
ウィンドウコントローラ.M:
-(IBAction) vsGameOpener: (id) sender
{
player1Type = [player1Select indexOfSelectedItem];
player2Type = [player2Select indexOfSelectedItem];
gameMode = 1;
[self unhideWindows];
}
ウィンドウコントローラ.Hをグローバルに割り当てられ
#import "MenuController.h"
int gameOn = 0; //global variable
int gameMode = 0; //global variable
int player1Type; //global variable
int player2Type; //global variable
...選択された項目。 m):
#import "gameView.h"
#import "MenuController.h"
extern int gameMode; //global variable
extern int gameOn; //global variable
extern int player1Type; //global variable
extern int player2Type; //global variable
実際にグローバル変数を使用している場合は、どこからでもアクセス可能でなければなりません。しかし、これは非常に悪い習慣です。 2つのクラスがどのようにリンクされているかにもよりますが、おそらく2つのクラスのいずれかのプロパティを調べる必要があります。コードの関連部分を共有してください。 – jcaron
質問に追加されたコード – Jobalisk
私は両方のクラスからグローバル変数にアクセスすることができますが、初期化された数値に設定されています。初期化されたクラスからでも変更することはできません。 – Jobalisk