忍者ブログ

佐崎司と愉快な仲間達

ゲーム、アニメ、CG、iOS開発など思いついたことを記事にしています。 管理人が3人いますので、記事にまとまりはないと思います。 iPhoneアプリのレビュー依頼も受け付けています。

renderInContextのキャッシュをすぐに解放する方法

わか

ARC環境下にてlayerのrenderInContextを使用した後、すぐにキャッシュが解放されない問題が発生しました。しばらくすると解放されましたが、連続で使用した場合、解放される前にメモリ不足で落ちました。
あれこれ調べてみると、UIGraphicsEndImageContextの前にview.layer.contents = nil;を追加するとキャッシュがすぐに解放されるようです。
忘れがちになりそうなので、メモしておきます。

拍手[1回]

PR

Allocationsの見捨てられたメモリについて

わか

instrumentsで見捨てられたメモリについて概要を記載します。

見捨てられたメモリ
メモリリークとは異なる。何らかの理由で確保されたが、使用されていない領域のこと。
実装を中断した中途半端なコードが残っている。データを重複して保存するような箇所がある。Allocationsにてある処理を繰り返して分析する技法「世代分析」して確認する。
Allocationsで検出可能

拍手[0回]


scrollsToTopが効かない場合の対応方法

わか

UIScrollviewにはscrollsToTopプロパティがあり、ステータスバーをタップすると一番上までスクロールする機能があります。デフォルトはYESです。
また、UIScrollviewは「UITableView、UIWebView、UICollectionView、UITextView」のsubviewsに含まれます。
今回、scrollsToTopがYESなのにステータスバーをタップしても一番上に移動しなかったので原因と対応方法を記載します。

拍手[0回]


Settings.bundleのローカライズ方法について

わか

XcodeのSupporting Files内にSettings.bundleを作成すれば、OSの設定アプリに設定項目を追加できます。ここにはアプリのバージョンや初期化設定を記載するのが一般的なようです。
一般的にはあまり使われていないような気もします。

ローカライズすることで多言語を表示できますが、すこし迷った部分があったので記載します。

拍手[0回]





searchBarSearchButtonClicked内ではUITextFieldを使用できない

わか

iOS 8.0
タイトル通りですが、UISearchBarのsearchBarSearchButtonClicked内ではUITextFieldを使用できないようです。
使用してもUITextFieldのdelegateが呼ばれない現象が発生します。

UITextFieldを使用する場合は、performSelector:withObject:afterDelay:を使用して、一旦searchBarSearchButtonClicked内の処理を終了させてから、使用すれば使用できました。

備忘録でした。

拍手[0回]