その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

Objective-C

位置情報サービス利用の際のバッテリー電力節約のためのヒント

位置情報対応プログラミングガイドみてたら、わかりやすくまとまってたので。 iPhone OSベースデバイスの無線によるデータの送受信は、デバイス上のその他の操作に比べ、より 多くの電力を必要とします。Core Locationはこれらの無線を利用してユーザの位置…

オープンソースのカスタムUIシリーズその5 : CWUIKit

UIKitになく、かつUIKitベースなオープンソースのUIライブラリを紹介していきます。 いきなりその5から始まるのは、過去に書いた、 UIPopOver風のWEPopover カバーフローのOpenFlow フリップカード風のFlipCardNavigationView グラフ描画のs7graphview に続…

iOSのフレームワークやクラスを紹介するサイト "iOS Frameworks"

A curated catalog of iOS frameworks and classes for the pragmatic iOS developer と銘打たれた、iOSのフレームワークやクラスを紹介するサイトを見つけました。 http://iosframeworks.com/ と紹介してみたものの、ざっと見た感じではイマイチかも・・・ …

機能が豊富(そう)なビジュアライズライブラリ "PowerPlot"

線グラフだけなら以前紹介したs7graphviewが手軽でおすすめなのですが、 今回発見したPowerPlotのexampleのページをみると、 と、なにやら機能が豊富そうです。 ただ、downloadのページをみると、 と、CHAPCHAまであったりしてなんだかめんどくさい・・・ と…

UIFont の fontName 一覧

たとえば IB で Helvetica を選んで「ボールド・イタリック」を選択した場合、Font欄には『Helvetica Bold Oblique』と表示されます。 で、これを真に受けてプログラム側でフォントを指定したい場合に、 self.hogeLabel.font = [UIFont fontWithName:@"Helve…

リファクタリング講座メモ

5/29にRainbowApps卒業生の方が主催された合宿に参加した際、そこでバスケさんが話されていた「公開リファクタリング講座」が非常にためになる内容だったので、そのときのメモを公開しておきます。 メモリまわりのデバッグ/リファクタリング leaksが有名な…

GeoHexのレベルとサイズの対応

先日のgeohexエントリに引き続き、国産アルゴリズムGeoHexについてです。 下記コードで各レベルにおけるhexSizeをログにはいただけですが、コード書かずとも知りたい人もいると思うので、載せておきます。 for (int j=0; j<15; j++) { NSLog(@"level:%d, hex…

Objective-C版GeoHexを試してみました

GeoHexとは 独自の座標系を用いて世界中(GoogleMapsのカバー範囲)を隙間の無いHex(正六角形)で埋め尽くし、Hexによって世界中の全ての緯度経度の地点を表現するための仕様。Hexの大きさは25段階(レベル)で指定できる。・見た目がcool!!・隣接する6つのHex…

コードスニペットまとめサイト

UIViewのブロックアニメーションについて調べようと検索かけてみたら、偶然便利そうなサイトを発見しました。 Code Snippet Collection 試しにLanguagesのタブからObjective-cを選んでみると、 http://icodesnippet.com/language/objective-c/ ざくざく出て…

UIKitのクラス名と、UI Automationでのクラス名の対応

UIAutomationをちょろっと使用してみたのですが、 「UIKitのあのクラスはUIAutomationでは何て名前?」 ってのをサッと知りたかったので、AppleのUIAutomationのリファレンスを見つつ、UIKitとUIAutomationのクラス対応表みたいなものを作ってみました。 ビ…

otoolでバイナリの内容をいろいろと調べる方法

new BSDライセンスについて調べていたら、こちらの有名な事件に関してのまとめ記事に行き当たり、 NatsuLion for iPhone クローン (略) から学んだこととかまとめ その中でこんな記述がありました。 今回の場合は、まず、Twitterville が見た目上ソックリで…

BMPファイルのカラーパレットを書き換える

ゲームのキャラ画像など、一つの画像に対して配色パターンがたくさんある場合、画像ファイルは1つだけ持っておいて、カラーパレットを動的に書き換えるという方式をとるようです。 これだと容量を節約できるし、全ピクセルに対して色変換する場合と違ってパ…

インストールしているアプリ一覧を共有するサービスappsfireのしくみ

ここで開発者の方が自らヒントを出してくれています。 http://forums.macrumors.com/showthread.php?t=1121778 I'm a Product Manager at Appsfire. We're happy you've found the app and hope you're enjoying.Everything we do is within Apple's guideli…

構造体を NSDictionary や NSArray に格納する方法

C言語の構造体をNSDictionary や NSArray、NSUserDefaultsなどに格納する方法、つまりObjective-Cのオブジェクト化する方法についてです。 CGRectとかCGPointを格納するときと同様、NSValueを用います。 例として下記のようなRGBAの色情報を持つ構造体を定義…

CCDirector のソース解析

CCDirectorのソースを解析してたときのメモがあったので、載せておきます。 (UIKitとcocos2dの併用時にCCSceneの遷移でハマっていたので、原因の目星をつけられるようソースを読んでました) CCDirectorの正体 CCDirector *director = [CCDirector sharedDi…

MKAnnotationViewのコールアウトをカスタマイズする

地図をタップしたときに出るフキダシをカスタマイズする方法です。 (参考ページより) 参考ページではかなり詳細に書かれているのですが、コールアウトのカスタマイズに関わる部分の要点だけ抜粋すると、 MKAnnotationViewのサブクラスをつくり(サンプルで…

OpenAL、AVAsset を使用した無料アプリをリリースしました

左右で別々の音源を聴くことが可能な、学習加速アプリです。 『i聖徳太子』 ※無料です やりたいことはシンプルなのに、 iPodライブラリから取得した曲を 左右にパンニングして再生 という必須要件を満たそうとするとそのまま MPMediaItem をMPMusicPlayerCon…

バッテリー消費量の計測方法など、iOSのデバッグに関するドキュメント

NSZombieEnabledをYESにするとか、そういう開発ノウハウの情報ソースはどこにあるんだろうと不思議だったのですが、iOS Dev Centerのドキュメントを漁っていて発見しました。 iOS Debugging Magic たとえばNSZombieEnabledなどの話は、Table 10 Foundation e…

Xcode 4 の IB で UITabBarController に UINavigationController を組み込む方法

Xcode3 の Interface Builder ではインスペクタから選ぶだけでできたのですが、 http://iphone-app-developer.seesaa.net/article/130194298.html (3) Inspectorの左端のtabでTab Bar Controller/View Controllersの項目の、Titleが"First"の部分を"View Con…

アプリのメモリ使用量をリアルタイムに表示するクラスを公開しました

なるべくUIViewを使わず描画するとか、nibを使わないとか、iOSアプリの動作を軽快にするためのTipsは数あれど、実際どれぐらい効果あるんだろう、ってことを調べたい、でもInstrumentsはめんどくさい、ってことでメモリ消費量やUIViewの数など、「負荷を示す…

iPhone の空きメモリ量や使用中のメモリ量を取得する

Instrumentsを使用せず、アプリ内から空きメモリ容量や使用中のメモリ容量を取得する方法です。 下記は空きメモリ容量を取得するサンプルです。 host_statistics()という関数を使用して、vm_statistics_data_t なる構造体を取得し、free_countという要素を出…

ビルド設定の "Other Linker Flags" に "-ObjC" を設定する意味

とある静的ライブラリ(拡張子.a)をリンクして使用しようとすると、実行時になぜか unrecognized selector sent to class XXXX とエラーが出るので、ビルド設定を見直したところ、"Other Linker Flags"(Xcode3.xで言えば「他のリンカフラグ」)に "-ObjC" …

大量の画像ファイルを圧縮したzipファイルをiPhoneで解凍するのに要する時間

画像をたくさん使いたい、でもバイナリサイズ20MBは超えたくないという場合に、 1. 初回起動時にサーバーからダウンロードする 2. zipで圧縮しておいて初回起動時に解凍する 3. あきらめる。なんとか切り詰める といった選択肢があるわけですが、サーバー連…

iOSにおけるパターンによるオートマティズム

勉強になりすぎてなかなか読み進めないので、個人的に参考になりそうな部分をかいつまんでまとめていきます。 iOS開発におけるパターンによるオートマティズム木下 誠 ビー・エヌ・エヌ新社 売り上げランキング: 69,541Amazon.co.jp で詳細を見る 通知のパタ…

バックグラウンドのアプリが殺される優先度

バックグラウンドで動いてるつもりでいつの間にかkillされるというのは EncountMe のようなアプリにとってなかなか切実な問題なのですが、こんな貴重な情報を見つけました。 http://d.hatena.ne.jp/kimada/20100722/1279807029#20100722f1 WWDC2010のスライ…

cocos2d を使用したゲームアプリのソースコード集

実装の参考になるかもしれないので、cocos2d を使ったアプリのソースコードをいろいろと集めています。 Gorillas https://github.com/Lamentum/Gorillas ビルドするのにプロジェクトをもろもろ整備する必要あり。 https://github.com/Lamentum/iLibs と coco…

Assets Library からの読み込みを高速化するための試行錯誤

先日出した高速スライドショーアプリは最高0.1s/枚とうたっていますが、実際のところ、なかなか1秒に10枚表示とはいきません。 ALAsset から UIImage へ変換する部分の実装ではこんな感じになっているのですが、 ALAsset *aseet = (ALAsset *)[self.assets o…

スクリーンショットを撮る

たまたまDeveloper Centerで見かけたもの。引数不要、戻り値はUIImageと、使いやすそうなので載せておきます。 (自分ではまだ試してないのですが・・・) http://developer.apple.com/library/ios/#qa/qa1703/_index.html%23//apple_ref/doc/uid/DTS4001019…

cocos2dでの3Dアプリケーションの開発を可能とするエクステンション「cocos3d」

"cocos3d"なるcocos2dエクステンションが出たようです。 http://brenwill.com/cocos3d/ とりあえずダウンロードしてデモを動かしてみました。 デモのビルド方法 cocos2dとcocos3dのソースが入ってないので、追加してやる必要があります。以下追加手順です。 …

Assets Library フレームワークを使用した無料アプリをリリースしました

大量の画像をダーッと見るための高速画像ビューアです。 『i走馬灯』 ※無料です Assets Library というiOS4から追加されたフレームワークを使用して、フォトライブラリの中身をまるっと取得することで、高速スライドショーを可能にしています。 Assets Libra…