投稿

1月, 2012の投稿を表示しています

iPhone iPad両対応ユニバーサルアプリ

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// iPad

} else {
// iPhone or iPod touch(iPhone OS バージョン3.2以上)

}
#else
// iPhone or iPod touch(iPhone OS バージョン3.2未満)

#endif

CGContextDrawPathに与えるパラメータについて

イメージ
CGContextDrawPathに与える2つめの引数について調べました。
2つの角丸四角形のパスを書いてからCGContextDrawPathを実行してます。

名前に出てくるEOというのはEven-Oddの略です。Even-Oddというのは偶数・奇数のことです。重なった部分はいくつのパスが囲っているかを調べ、奇数の時は塗る、偶数の時は塗りません。

kCGPathFill
内部を塗ります。



kCGPathStroke
輪郭を書きます。



kCGPathFillStroke
内部を塗って、輪郭を書きます。



kCGPathEOFill
内部を塗るが重なった所は奇数遇数ルールに従う。



kCGPathEOFillStroke
内部を塗って、輪郭を書くが、重なった所は輪郭は書いて内部は奇数遇数ルールに従う。

(追記)
SwiftではCGPathDrawingModeになりました。

UIFontのretainCount

[[UIFontsystemFontOfSize:50] retainCount]が1をすっとばして2になる。
誰かが初めの1をしている。

状況を勝手にイメージすると
UIFontクラス内ですでに全てのサイズごとのインスタンスが用意されていて、それらはすでにretainCountが1。で、自作ソース内で使おうとすると、インスタンスを生成するのではなくてすでにあるものへの参照が渡され、retainCountを+1すると2になるような感じ。
あくまで勝手なイメージなので実際はこれとは誤差があると思います。

調べます。

調査プログラム
NSLog(@"%d",[[UIFontsystemFontOfSize:50] retainCount]); NSLog(@"%d",[[UIFontsystemFontOfSize:50] retainCount]); NSLog(@"%d",[[UIFontsystemFontOfSize:50] retainCount]); NSLog(@"%d",[[UIFontsystemFontOfSize:50] retainCount]); NSLog(@"%d",[[UIFontsystemFontOfSize:50] retainCount]); とやると 2 3 4 5 6 と出てきます。どうやらインスタンス(と呼ぶのかどうかわかりませんが)を使い回ししてます。


ちなみに
NSLog(@"%d",[[NSStringstringWithFormat:@"abc"] retainCount]);
NSLog(@"%d",[[NSStringstringWithFormat:@"abc"] retainCount]);
NSLog(@"%d",[[NSStringstringWithFormat:@"abc"] retainCount]);
NSLog(@"%d",[[NSStringstringWithFormat:@"abc"] retainCount]);
NSLog(@"%d",[[NSString…

WebViewでの画像の扱い

画像を100px x 100pxで作成し、
htmlにwidth = "50px"と書いて表示すると

ratinaデバイス 100px x 100pxで元の画像通りに表示
非ratinaデバイス 50px x 50pxで滲んで表示

アプリ内に置いたHTMLファイルを表示

アプリ内に置いたHTMLファイル(index.html)を表示する。

NSString *address = [[NSBundlemainBundle] pathForResource:@"index" ofType:@"html"]; NSFileHandle *readHandle = [NSFileHandlefileHandleForReadingAtPath:address]; NSString *htmlString = [[NSStringalloc] initWithData:  [readHandle readDataToEndOfFile] encoding:NSUTF8StringEncoding]; [htmlViewloadHTMLString:htmlString baseURL:[NSURLfileURLWithPath:address]]; [htmlString release];

自動解放を伴うメソッドのretain counter

stringWith〜などは自動的にauto release poolに入って、自動的にreleaseが送られるけど、一連の流れの中でretain counterがどうなるかはなかなか書いているものがない。インスタンスが作成されるときに1となって自動release時に-1されるようである。