プロパティのassignとretainの解放について
今更ながらassignとretainが良く分からなくなった。
assignは基本的にreleaseしないという認識だったが下記のような場合は当然releaseしないとメモリリーク。
@interface SampleVC() @property (assign, nonatomic) UIView *view1 @end @implementation SampleVC - (void)viewDidLoad { [super viewDidLoad]; self.view1 = [[UIView alloc] init]; //view1をallocしてinitしているのでretainCount+1 } - (void)dealloc { [super dealloc]; NSLog("retainCount:%d", [view1 retainCount]); //1 [_view1 release]; }
assignで宣言していても、その変数を明示的にalloc+initしてる場合はreleaseしてあげないといけない。
releaseしなくて良いのは値の受け渡しで使用する場合ですね。
逆にretainで宣言した変数を明示的にalloc+initした場合はreleaseを2回してあげないといけない。