私はiPhoneで開発していますが、NSMutableArrayにオブジェクトを格納する方法がありません。何が間違っているのですか?NSMutableArrayにオブジェクトを格納する際の問題
コードの関連セクションは、私はNSObjectのから直接継承する定義されたオブジェクト、エンティティを有する
あります。 GLView.h
@interface GLView : UIView
{
BOOL controllerSetup;
// Entity etc - first development task it to get one up
NSMutableArray *arrEntities;
}
@property(nonatomic, assign) NSMutableArray *arrEntities;
そうとdrawView機能では、体内の - - タイマーイベントで複数回呼び出される - 私のクラスでは、私はこれらの配列を定義したいGLView私がのために、配列を割り当てると、初期の開発、ただ1つのエンティティオブジェクトと
- (void)drawView
{
if(!controllerSetup) { // initialize on first call
[controller setupView:self];
controllerSetup = YES;
arrEntities = [NSMutableArray array];
Entity* thisEntity = [[Entity alloc] initEntity];
[arrEntities addObject:thisEntity];
}
Entity *entity = [arrEntities objectAtIndex:0];
[entity tickEntity:0.1];
}
私の理解では、drawView
の最初の呼び出しにNSMutableArrayのが設定されるだろうということでした配列に追加し、エンティティのインスタンスは、体内で、その後、それに追加配列に格納されたエンティティの最初のコピーへのポインタが取得され、これが操作されます(明らかに、 ater)。
しかし、プロシージャの最初の呼び出しですべて正常に動作すると、objectAtIndex
はエンティティポインタを取得し、すべて動作します。しかし、controllerSetup
がtrueで初期化節が実行されなかったときの第2の呼び出しでは、arrEntities
は空であり、objectAtIndex
がnilを取得するのでプログラムがクラッシュします。
どうしたのですか?格納されたEntityオブジェクトがNSMutableArrayで保持されないのはなぜですか?あなたが明示的にあなたの配列を割り当てていないので、
- (void)dealloc
{
[arrEntities release];
[super dealloc];
}
基本的には:そして、deallocメソッドに追加することを確認してください
arrEntities = [[NSMutableArray alloc] init];
:
コードをダンプしないでください。あなたは何をしたのか説明する必要があります。これは貧しい答えです。 – arco444
私は次回に覚えています....提案のおかげで... – Mak