0

私の英語でごめんなさい...

「.h」ファイルで

NSString *_name;

「.m」ファイルで

-(id)init{

.....

_name = [[NSString alloc] initWithString:@"Hadrian"];

.....

}

そして、次のように _name の値を変更するために使用する関数:

-(void) changeName:(NSString *)name{

    //No 1:

    _name = [name copy];

    //No 2:

    if(_name) [_name release];

    _name = [name copy];

}

漏れの原因はNo.1?この関数標準の書き方は?

4

1 に答える 1

0

提案...

  • @property と @synthesize : @property / @synthesize を使用すると、ゲッター/セッターはそれらによって処理されます。あなたはそれを処理する必要はありません。(長いコードの代わりに機能を使用する)

    Inject IOSからの回答も見てください

    • プロパティはアクセス制限を適用します (読み取り専用など)
    • プロパティはメモリ管理ポリシーを適用します (保持、割り当て)
    • プロパティは (まれに) スレッド セーフ戦略の一部として使用されます (アトミック)
    • プロパティは、カスタム セッターとゲッターを透過的に実装する機会を提供します。
    • インスタンス変数にアクセスする方法が 1 つであると、コードの可読性が向上します。
  • 命名規則 :自動生成されたアクセサーとの競合を避けるために、変数名の前に _ を付けることは避けてください。または、ケランによるこのリンクで示され、説明されているように合成します

  • リーク :オブジェクトを割り当てたり、コピーを作成したりすると、オブジェクトを所有します。これは、オブジェクトの保持カウントが 1 である (自動解放されていない) ことを意味します。あなたには責任があり、そのオブジェクトを使用したら解放する必要があります。

于 2013-03-26T11:12:20.380 に答える