タグ

ブックマーク / son-son.sakura.ne.jp (3)

  • アプリ高速化のための5つのノウハウ

    sonsonの経験則です. 1.大量のメモリを使わない,メモリの確保と解放の繰り返しは避けて,再利用 ・メモリを大量に使用すると目に見えて実行速度が低下する.また,memoryWarningによる割り込みのメッセージが多発する可能性があるため,その処理にも時間がかかる. ・TableViewでセルの再利用APIが提供されているようにインスタンスの確保と解放の繰り返しは大きく速度に影響を与える.(SDKが出る前,Jailbreak時代は再利用関数を自前で作ってたなぁ・・・) 2.恒久的に使いそうなオブジェクトはなるべく保持する ・利用しているクラスにメモリリークがあると,それの確保・解放を繰り返している内にメモリがどんどんいつぶされる.怪しいクラスは特に注意して使うようにする.まぁ,なんら抜的な解決策ではない気もしますが(アップル頼むよ). 3.背景に透明色を使わない ・ついつい

  • sonson@Picture&Software - [iPhone SDK] UIImageでピクセルを扱う

    Quartz 2DまわりのAPIを使い,UIImageからCGImageRefを経由してピクセルの値を取得することができる. UIImage* source = [UIImage imageNamed:@"image.png"]; CGImageRef inputImage = [source CGImage]; これでCGImageのポインタを取得できる.CGImageからは,CGImageGetDataProviderとCFDataGetBytePtrを使い,ピクセルの値やピクセルのデータサイズ,1行ごとのバイトサイズなどを取得できる. CFDataRef inputData = CGDataProviderCopyData(CGImageGetDataProvider(inputImageRef)); unsigned char *pixelData = (unsigned char

  • sonson@Picture&Software - [iPhone SDK] UIImage,CGImageの小技

    UIImage,CGImageにはいくつか小技がある模様. UIImageの引き延ばし ボタン,ビューなどの背景に画像をセットするとき,そのまま拡大されるとかっこ悪い.AppleiPhone上で提供しているボタンなどは,すべて四方の隅をそのままに中央のピクセル値を繰り返して拡大するように引き延ばされている.この引き延ばしのセットもAPIが用意されている. UIImage *stretched = [original stretchableImageWithLeftCapWidth:5 topCapHeight:5]; 一つ目と二つ目の引数が四方の隅のサイズ.これで生成したUIImageをUIImageViewにセットして使用したり,drawInRectなどのUIImageのメソッドでサイズを大きくして描画するとちゃんと引き延ばされて描画される. UIImageのリサイズ UIImag

  • 1