<< Prev Page Next Page >>

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


allocしてinitしてautoreleaseするメソッド

Objective-Cで任意のクラスに好きなメソッド生やせるってわかってから一気に気持ちが軽くなってCocoaでの開発が嫌じゃなくなってきた。いいよねiPad。いいよねiPhone。

View操作とか文字列操作のメソッド名が単に長いってだけのことにこんなに影響受けてたのかと驚く。考える内容が考えるのに近いスピードで打てない苦痛にこんなに弱いと思わなかった。人間やってみるといろんなことがわかるもんだ。なんかこう、重い足かせ手かせがついてるみたいな気持ちでいっぱいだったんだもの。

Objective-Cで無名カテゴリでprivateなプロパティを実現する方法 | Eudyptes Chrysocomeとかを利用して、retainとかreleaseとか自分でできるだけ書かないんだって決めて、でもそうすると今度はautoreleaseとか書くのが長くてちょっとウザ、となってくる。

self.label = [[[UILabel alloc]init]autorelease];
label.text = @"foobar";

そこでまたオレオレメソッド登場ですよ。(やりすぎ注意)

NSObject_Util.h

@interface NSObject(Util)
//allocしてinitしてautoreleaseして返す
+(id)uNew;
@end

オレオレメソッドは決まったプレフィックスつけてちょっと変な名前にしておこうオレルール。

NSObject_Util.m

#import "NSObject_Util.h"
@implementation NSObject(Util)
//allocしてinitしてautoreleaseして返す
+(id)uNew {
return [[[self alloc]init]autorelease];
}
@end

Objective-Cのselfはクラスとか実装オブジェクトではなくレシーバなので、これでちゃんと使えちゃうのが他の言語とちょっと違って面白い。
self.label = [UILabel uNew];
label.text = @"foobar";
self.button = [UIButton uNew];
self.myobj = [MyClass uNew];


この記事に対するコメント

おぉ、すっきりしてる。
便利そう!

【2011/09/01 14:22】URL | きしだ #-[ 編集]

便利ですよ。こういうのとかNSStringとかNSArrayに生やしたオレオレメソッドがないと息が詰まって死ぬので僕はObjective-C-erにはなれそうにありません。

【2011/09/01 23:01】URL | とっくり #-[ 編集]

この記事に対するコメントの投稿



管理者にだけ表示を許可する

この記事に対するトラックバック

トラックバックURL
http://tockri.blog78.fc2.com/tb.php/251-976119fe
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。