0

UIButton オブジェクトを配列に追加しようとしていますが、失敗します。[pixels count] または [colors count] を呼び出すたびに 0 が返されます。[self.arrayName addObject:myObject] と [arrayName addObject:myObject] を使用しようとしましたが、どちらも機能していないようです。私はObjective-Cにかなり慣れていないので、おそらく私の側ではばかげているように見えますが、これは1時間以上私を困惑させてきました.

ViewController.h のコードは次のとおりです。

 #import <UIKit/UIKit.h>

 @interface ViewController : UIViewController {
 NSMutableArray *pixels;
 NSMutableArray *colors;
 }
 @property (nonatomic, retain) NSMutableArray *pixels;
 @property (nonatomic, retain) NSMutableArray *colors;
 @end

そして、ここに ViewController.m からの関連コードがあります

 int x = 30;
 int y = 60;
 for(int i=0; i<10; i++ ) {
      UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x,y,20,20)];
      [self.pixels addObject:button];
      x += 20;
      y += 20;
 }

ここでダウンロードできるプロジェクト全体を圧縮しました: http://mdl.fm/pixelated.zip

助けていただける方、よろしくお願いします!

4

2 に答える 2

4

配列を使用する前に、これを追加してみてください。

NSMutableArray *pixels = [[NSMutableArray alloc] init];

Obj-C の配列は、使用する前に初期化する必要があります。nil インスタンスでメソッドを呼び出すと、Obj-C ではゼロが返されるだけなので、これを行うのは簡単で、配列が格納すべきと思われるものを格納しなくなるまで気付かないでしょう。

編集してコメントから情報を追加します。

メソッド自体の準備ができたらすぐに使えるように、初期化を-ViewDidLoadメソッドに入れることができます。それらが自動的にガベージコレクションされないように、それらViewControllerを確認してください。retain

于 2012-12-04T23:01:19.470 に答える
2

init メソッドでピクセルを初期化しました。ストーリーボードで設定したコントローラーに対して init は呼び出されません。これを initWithCoder: に変更するか、配列の初期化を viewDidLoad に移動します。

于 2012-12-04T23:05:41.070 に答える