最近、iPhoneのメモリ管理について調べた際、同じオブジェクトでコンビニエンスメソッドとinitメソッドを比較してみました。たとえば、ダウンロードした NSData を表示する UIImageView があります。
便利な方法:
imageView.image = [UIImage imageWithData:[downloads dataAtIndex:0]];
初期化方法:
UIImage *aImage = [[UIImage alloc] initWithData:[downloads dataAtIndex:0]];
imageView.image = aImage;
[aImage release];
ビューを行ったり来たりしてメモリ使用量を増やし、「Simulate Memory Warning」をクリックすると、アプリのメモリ使用量がコンビニエンス メソッドで 20MB から 18MB になり、init メソッドですぐに 20MB から 13MB になりました。
また、便利なメソッドの自動リリースでリリースする時間を与えるために、アプリを待って操作しました。でもあまり落ちませんでした。
オートリリースとリリース以外に、他に何が違いをもたらしましたか?