2013年11月25日月曜日

Projectに追加した画像ファイルの場所


UIImage の imageNamed メソッドを使うとUIImageオブジェクトがキャッシュされます。サイズが大きい画像の場合などでキャッシュに残したくない場合はimageWithContentsOfFile メソッドを使用するように書かれています。

imageNamed:
If you have an image file that will only be displayed once and wish to ensure that it does not get added to the system’s cache, you should instead create your image using imageWithContentsOfFile:.

プロジェクトに追加しイメージファイルのパスは次の方法で取得します。

NSString* imgPath =
                  [[NSBundle mainBundle] pathForResource:imgName ofType:@"png"];



設定の通知センターからアプリが消えない



Push Notificationのテスト後、Push Notificationを無効にしたが、通知センターからアプリアイコンが削除されない。アプリをアンインストールするといったん消えるが、再インストールすると再度登録されてしまう。

これはPush Notification許諾の確認が一日一回だけ行われ、いったん許諾するとその間はそのアプリが通知センターの対象となるため。

デバイスの時計を一日以上先に進めるとリセットすることができる。
手順は以下のサイト参照。

Troubleshooting Push Notifications
When I delete my iOS application push notification state remains

2013年11月24日日曜日

UIWebViewのキャッシュ



UIWebViewを使用しているときのキャッシュコントロール

//キャッシュを全て消去
[[NSURLCache sharedURLCache] removeAllCachedResponses];

//NSURLRequest作成時にポリシーを設定
NSURLRequest *request = [NSURLRequest requestWithURL:url
                                     cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                     timeoutInterval:30.0];


NSURLRequestCachePolicyの値


NSURLRequestUseProtocolCachePolicy
Protocolのキャッシュポリシーに従う。デフォルト。

NSURLRequestReloadIgnoringLocalCacheData
キャッシュの有効期限にかかわらずurlへアクセス


NSURLRequestReloadIgnoringLocalAndRemoteCacheData
上に加え、proxyなどにもキャッシュ破棄を指示する。

NSURLRequestReturnCacheDataElseLoad
キャシュがあればそれを使用、なければURLへアクセス

NSURLRequestReturnCacheDataDontLoad
キャッシュのみを使用。オフラインと同等の動作。


NSURLRequestReloadRevalidatingCacheData
有効性をチェックし、有効ならキャッシュを使い、無効ならリロード。