-2

.m コードに次のコードがあります

@implementation MyGameController
{
    NSMutableArray* viewsarray;
}

このように初期化しています

- (void)viewDidLoad
{
   viewsarray = [[NSMutableArray alloc] init];
   for (int i=0; i < TOTAL_ITEMS; i++)
   {
        ItemController* iv = [[ItemController alloc] initWithNibName:@"ItemPadXib" bundle:nil];

        [viewsarray addObject:iv];
    }
}

この関数の最後を確認すると、配列はそのままで、すべての項目が含まれています。ただし、後で解放され(私は思う)、viewsarray は nil に設定されます。

後でこのようにアクセスしようとするので、これを知っています

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
    ItemController* iv1 = [viewsarray objectAtIndex:index];
    ....
}

bpこの関数にa を設定するviewsarrayと、nil

を として宣言しようとしviewsarrayましたpropertyが、動作は同じです

重要なことの 1 つ - シミュレーターでは問題なく動作します。違いは何ですか?ARC の動作は異なりますか?

4

1 に答える 1

2

インスタンス変数は(viewsarrayデフォルトで) 強いため、自動的に解放することはできません。メモリ管理 (ARC による) は、シミュレータとデバイスで同じです。あなたのバグは他の場所にあります。

于 2012-11-14T12:38:12.947 に答える