"programming"
Sunday, July 3, 2011
[link] Unit Testing in Xcode 4 Quick Start Guide | Ray Wenderlich
Unit Testing in Xcode 4 Quick Start Guide
Xcode4での単体テストチュートリアル。デフォルトのOCUnitではなくGHUnit+OCMockを使用する方法が紹介されている。
Saturday, July 2, 2011
Wednesday, June 29, 2011
[link] Technical Q&A QA1673: Technical Q&A QA1673
How to pause the animation of a layer tree
アニメーションを一時停止する方法
Wednesday, June 8, 2011
[link] アプリのメモリ使用量をリアルタイムに表示するクラスを公開しました - Over&Out その後
Instrumentsを使うほどではないけどざっくりメモリ使用量を確認したい…ってときに便利かも。
Friday, May 20, 2011
Thursday, May 19, 2011
Xcode4の自動コンパイルを無効にする
下記設定項目のチェックを外す。
1. Xcode > Preferences > General > Enable Live Issues > In Editors, In Issue Navigator
2. File > Project Settings… > Enable live issues in the source editor
Wednesday, May 18, 2011
Saturday, May 14, 2011
Thursday, April 28, 2011
アクセッサ経由でnilを代入すればreleaseが1回行われる
ただし修飾子がretainの場合かつ代入前の値がnil以外の場合に限る。
もう少し正確に言うと、プロパティに対して異なるオブジェクトを代入すると、代入前のオブジェクトに対して1回releaseが行われる。releaseされる理由は、retain指定でpropertyを作成した場合にどういうセッターメソッドが作られるのかをドキュメントで確認すれば分かる。
例
@property (nonatomic, retain) NSMutableArray *array;
- (void)method {
// プロパティ経由で代入
// [array retainCount] = 1(allocの分) + 1(retainの分) = 2
self.array = [[[NSMutableArray alloc] init] autorelease];
...
} // autorelease済みだから、runloop終了で1回releaseされてretainCount = 2 - 1 = 1になる
- (void)dealloc {
// プロパティ経由でのnil代入により1回releaseされretainCount = 1 - 1 = 0となり
// arrayオブジェクトは解放される
self.array = nil;
[super dealloc];
}
プロパティを経由せず、直接nilを代入してもreleaseされない。
こんなコードをみかけたので、自分も同じ轍を踏まないようメモ。
- (void)dealloc {
array = nil; // 直接nil代入しているためreleaseされずretainCount = 1のまま。arrayはゾンビになる。。。
[super dealloc];
}
releaseなら問題なし。
- (void)dealloc {
[array release]; // または[self.array release];
[super dealloc];
}
Wednesday, March 30, 2011