1

何らかの理由で を使用できないためarc、以下のコードで..

フー。

@interface Foo : NSObject

@property (nonatomic, copy) NSString * string;

@end

Foo.m

@implementation Foo

@synthesize string=_string;

- (void) bar {
    self.string = [NSString stringWithFormat:@"test1"];
    self.string = [NSString stringWithFormat:@"test2"];
}

-(void) dealloc
{
    [_string release];

    [super dealloc];
}
@end

メソッドは常に呼び出されるとは限らないか、bar複数回呼び出される可能性があります。

release必要なものは1 つだけdeallocですか?

4

2 に答える 2

2

はい、プロパティを使用しているため、setter メソッドがメモリ割り当ての解放を処理します。次のようにメモリを割り当てます。

-(void)setValue:(NSString *)strValue
{
   if(string)
   {
     [string release];
     string = nil;
   }
   string = [strValue copy];
}
于 2012-12-06T16:31:48.103 に答える
2

dealloc でのリリースは 1 つだけで十分ですか?

はい。

説明: セッター メソッドは、プロパティに割り当てられた古いオブジェクトを解放し、新しいオブジェクトを保持します。

于 2012-12-06T16:29:29.110 に答える