0

注:私の質問は、これとそれに対する回答を確認した後に基づいています。

一部のより大きなメソッドには、特定の期間のみ有効にしたいコードがあります。例:

1)UIを設定する大きな方法があります:UILabel'sサイズ、色、配置、UIView'sジェスチャー認識など。上記を知っていれば、次のようなことをするのは理にかなっていますか:

- (void)setUI
{
    //setting other UI elements
    {
        // Add the Swipe Gesture to the swipeUpView
        UISwipeGestureRecognizer *swipeGestureUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(animeViewWithSwipeGesture)];

        swipeGestureUp.direction = UISwipeGestureRecognizerDirectionUp;
        [_swipeUpView addGestureRecognizer:swipeGestureUp];
    }

    // setting other UI elements
}
  • 上記の例に基づいて、これはアプリケーションのメモリ フットプリントを下げる有効な方法ですか?
  • との関係はあります@autoreleasepool{}か?
4

3 に答える 3

2

単純なC構文です。他の人が述べたように、あなたはそれを使って新しいスコープを開きます。これが意味すること(これはC機能です)は、スコープが異なるため、スタック変数に同じ名前を再度使用できることを意味します。また、そのスコープ内で宣言した変数は、スコープ外からはアクセスできません。

メモリーフットプリントとは関係がなく、コードの編成についてのみです。

于 2012-09-20T08:07:07.610 に答える
1

上記の例に基づいて、これはアプリケーションのメモリ フットプリントを下げる有効な方法ですか?

いいえ、関係すらありません。どちらも関係ありません@autoreleasepool- この中括弧の使用法は、新しいスコープを開く単純な C の方法です。

于 2012-09-20T07:35:08.747 に答える
0

中括弧が行うことは、新しいスコープを定義することだけなので、他の外側のスコープ変数と同じ名前で新しい変数を定義できます。

@autoreleasepool{} ブロックは同様に静かですが、最初に自動解放プールを宣言し、最後にそれを排出します。そのため、そこで宣言されたすべての自動解放されたオブジェクトが終了時に解放されるため、メモリ フットプリントの観点からはより良いかもしれません。その範囲。

于 2012-09-20T07:29:48.010 に答える