iPhone/iPad

2010年6月19日 (土)

iPhoneSDKリハビリその4

20100621 追記:昨日は↓のように書いたけど、Developビルドでファイル共有が使えなかったのはAppIDに*を指定していたからかもしれません。Distributionビルドする際についでにAppIDもちゃんとしたものに設定しなおしたのでそれが効いただけかも。(どこかのblogで見かけた情報。URLメモり忘れました)

リハビリでは無いけど、わかったことがあるので記録。

今作っているiPadアプリではiTunes経由の共有ファイルを使いたいと思っています。で、appleのドキュメントにしたがってUIFileSharingEnabledをtrueにしてビルドしてみたんですが、iTunesのAppタブの下のファイル共有欄に開発中のアプリは出てきません。

続きを読む "iPhoneSDKリハビリその4"

| | コメント (0) | トラックバック (0)

2010年6月 8日 (火)

iPhoneSDKリハビリその3 (Delphi好きのためのObjective-C)

iPhoneOSじゃなくてiOSになりましたが。


追記20100609 公式版メモリ管理ポリシーの日本語版を落としていたのを思い出して読んでみたところ、メソッド(メッセージ)の種類によってはreleaseが必要な場合があるらしいので追記。公式ドキュメントはちゃんと読むべきですね

Objective-Cのretain/releaseルールをすっかり忘れていたので再勉強。

ひさしぶりなので手動の参照カウンタ管理が面倒だったんですが、
http://wwwa.dcns.ne.jp/~nito/CocoaClub/
のサイトに、"参照カウンタ"では無く、"保持カウンタ"と書いてあるのをみて
非常にしっくりきました。参照する場合にカウンタを++するのではなく、保持する
場合に、保持する側のオブジェクトが++するんですね。

このサイトにもretain/relaseルールが書いてありましたが、今までの自分の他言語での経験が邪魔をするし少し違和感もあるので自分用にルール決め:

<retain/releaseルール>
(原則)
1.保持する・しないは全てオブジェクト目線。
2.releaseはオブジェクトインスタンスを解放するものではない (解放することもある)
    releaseは保持をやめる・参照しないことを宣言するだけ

3.関数内でalloc - initしたら、まずその近くにreleaseを書く。 (オブジェクトを参照するコードは後でinit~release間に挿入するように書く) 追記:20100609 new〜や〜Copyの場合の場合もreleaseが必要
4.ただし、そのオブジェクトを関数呼び出し元に返すなら、autoreleaseにする。

5.コンストラクタ(init)内で alloc-initしてメンバ変数に保持するコードを書いたら、すぐにデストラクタ(dealloc)にreleaseを書く

6.NSArray arrayWith~等で生成したオブジェクトを含め、別オブジェクトから受け取ったオブジェクトはreleaseしない (生成している・していないは意識しない。意識してしまいがちだけど、どちらにしろreleaseするのは呼び出し先のオブジェクトの役目) 追記:20100609 new〜や〜Copyで受け取った場合はreleaseが必要

7.別オブジェクトから受け取ったオブジェクトを継続的に参照する(保持する)ならretainする。
8.retainを書いたらすぐにreleaseもしくはautoreleaseを書く。 書く場所はalloc-init時と同じ

9.構造体にはオブジェクトを格納しない。(保持する側でretainすることができず、保持させる側がretainせざるをえないから)
  クラスを作って@property (retain)で格納する。 retainしているので、 ルール8を適用する

(例外)
10.循環参照になる場合はretainしない
11.外部ライブリ等に上記ルールに沿ってなくて、保持する必要があるオブジェクトをretainしないものがあったらどうしよう? (考えすぎ?)


(補足)
Delphiユーザーなど、オブジェクトは基本的にCreate/Freeしなければならない言語を使っている場合、 Createを書いたらすぐにFreeを書く癖をつけている人も多いと思います。(関数内のみで使うなら try  .Create  finally  .Free end まで一気に書いてしまうと思います)

そういう場合、ルール3,4を実践するのは簡単でしょう。

でも、そういう癖がついていればいるほど他人が書いたObjective-Cソースを見ると混乱すると思います。例えばアプリケーション開始時にコントロール(UIView)群を作成する場所で

UIXXXView *xxx = [[ UIXXXView alloc] init~]; // コントロール生成
[window addSubView:xxx]; // 親ウインドウにコントロール貼り付け
[xxx release]; // すぐリリース????

となっているソースを良く見かけます。 普段の感覚でreleaseをインスタンスの解放だと思ってしまうとすぐにreleaseしていることに違和感ありまくり。
親ウインドウにコントロールを貼り付けたのに、すぐに解放するなんて。後で使うやろ?

でもルール2により、releaseはインスタンスの解放では無いと考えると納得できます。
親ウインドウ側ではルール7によってコントロールをretainしていると考えることができるので、ここでreleaseしてもインスタンスは解放されません。
コントロールが不要になって親ウインドウがreleaseした時に初めてインスタンスが解放されます。

と、ここまで書いてやっと自分でもすっきり腑に落ちた気がします。


(ここから妄想)

続きを読む "iPhoneSDKリハビリその3 (Delphi好きのためのObjective-C)"

| | コメント (0) | トラックバック (0)

2010年6月 2日 (水)

iPhoneSDKリハビリその2 (Delphi好きのためのiPhoneSDK&ActionScript対比)

Objective-CというかCocoa Touchについて覚えたつもりでもすぐに忘れるので自分用に簡単な対比メモ。DelphiとASとObjCを比較。 (ASは自分が使っている範囲のみ)

残念ながら他の人が見てヒントになるようにはできてませんが、間違いがあったらつっこんでもらえるとありがたいです。

続きを読む "iPhoneSDKリハビリその2 (Delphi好きのためのiPhoneSDK&ActionScript対比)"

| | コメント (0) | トラックバック (0)

2010年6月 1日 (火)

iPhoneSDK リハビリ開始

久しぶりにiPhoneSDKを触ろうとしたら証明書が去年の2月に切れていて四苦八苦。
Xcode上の操作では無くて、MacOSのキーチェインアクセスというアプリケーションで証明書を取るというのがどうしても覚えられない。

続きを読む "iPhoneSDK リハビリ開始"

| | コメント (0) | トラックバック (0)

2010年5月31日 (月)

書籍自炊 その3

iPadでの技術書閲覧はまだまだ辛いと思いつつも、後戻りはできないので自炊継続。
過去に買いだめていたiPhoneSDK関連の書籍を一揆に自炊。
あとは『Objective-C逆引きハンドブック』だけだけど、この手の本はランダムアクセス性が大事だから躊躇中。

あと、いまさらながらに気づいたけど、pdfのページ番号と本の索引のページ番号が一致しないのが地味につらい。解決法はないかな。

2010_0531_scansnap
なんとなくはじめた背表紙画像のUPだけど、書籍をいつ自炊したかを把握するのに意外と役立つことが判明。(pdfの日付は、OCRをかけたり最適化をすると変わるので)
一日に処理する冊数が増えてきたのでちょっと面倒だけど。

| | コメント (0) | トラックバック (0)

2010年5月30日 (日)

iPadで読書

iPadが届いて色々試し中。

<全般>
液晶が綺麗です。ちょっと重い。

iPhoneの時には気にならなかったけど、アプリケーションの終了時にホームボタンを押さなければいけないのが気持ち悪い。画面タッチの操作から、物理的なボタン操作へと思考の切り替えが必要なのが原因だと思うけど。

アプリケーションの完成度が高いものが多いんですが、多機能のものが多くてボタンのアイコンだけを見ても機能がわからないことが多くなった気がする。
ツールチップ的なものを表示するための、標準的な方法が必要だと思う。
(どこかの会社が触れずに操作できるタッチパネルを発表してたと思うけど失念)

<お絵かきアプリ>
・ScketchBook Pro:楽しい。でも指3本でのタッチが標準操作に組み込まれているのは辛い。カラーパレットとかフローティングに出来ないのかな。
・上記以外のお絵かきアプリで良いのがまだ見つかっていない。AdobeのIdeasを試したい。

<電子書籍>
・GoodReader:Dropboxとの連携が便利だけど、ページ送りが縦方向なのが不便。あと見開きで閲覧できない? (GoodReaderは多機能ぽいので、どちらも設定があるかも)
・i文庫 HD:見開きもできるし、ページ送りが気持ちいい
・CloudReaders:ページ送り中に3ページ分表示されているのが良い。カタログ的な画像が多いものだと白紙ページが表示されるものがある。

小説など、ページを順番に読むものにはよさそうですが、いまのところ、気持ちよく技術書を閲覧できる感じではないです。紙の書籍に比べてランダムアクセス性がかなり落ちるのが原因だと思う。
でも、電子書籍化したいのはかさばる技術書なので辛いところ。

ランダムアクセス性を高めるために、10ページ程度を一度に縮小表示する機能があればいいなと思う。処理速度的に辛いのかもしれませんが。

自分でpdfリーダーを作るのもありかもしれないけど、すでにある程度良いものがあるので、それの進化に期待したいです。

個人的にはCloudReadersとi文庫 HDに期待。両方とも作者が日本人だと思うので要望なども伝えやすそう。


何かアプリケーションを作りたくなってきました。iPhoneの時に作ろうとしていたMarbleCLAYのタッチ版を再開しようかな。まだアプリ名しか考えて無いけど

| | コメント (0) | トラックバック (0)

2010年5月28日 (金)

iPadまち

iPad配達待ち中。iPod touchの時は5日も前についたのにiPadはきっちり発売日到着か。
噂では14時到着指定というのも聞いたし、AppleStoreでの予約の優位性はなくなったな。

暇つぶしに見てたTechCrunchで下の記事を発見:

http://jp.techcrunch.com/archives/20100527palm-loses-their-lead-webos-designer-to-the-google-android-team-others-may-follow/

AndroidのUIは少し気持ち悪かったので期待できる。HPのwebOSが心配になってきたけど

| | コメント (0) | トラックバック (0)

2010年5月15日 (土)

携帯端末の3G契約

・Sharpのandroid開発端末JN-DK01が発売。
高すぎるし、例によってマーケットアプリも無し。配布したアプリの確認とか、他のアプリの動作検証とかしようと思うとマーケットが無いのは痛すぎる。 今持っているSmartQ5では色々辛いし、 iPod touch的なAndroid端末が欲しい。

iPhoneアプリが盛んなのはiPod touchの存在のおかげかも。OpenGL ES2を試したかったし最新版でも1万円台で変えるみたいだから買っとけばよかった。(iPadを予約したから、もういらないけど)

何かデバイスを試すたびに3Gを契約するのは現実的じゃないし、なんとかならないかなあと思ってましたが、以下のニュースを発見

NTT東、持ち運べる無線ネット接続器

iPadに最適なSIMロックフリーのダイヤルアップルーター日本通信から登場か

1つめの記事は東日本だし、通信料がわかないけど、2つめのbmobileほうはアリかも。iPhone解約してこれに一本化も考えよう。(iPhone 4G/HDの出来次第だけど)

| | コメント (0) | トラックバック (0)

2010年4月16日 (金)

ミツバチFlash

iPad、発売延期になってしまいましたね。残念。
ここ数日、色々愚痴ってしまいましたが(ASに触り始めた矢先だったもので・・・)、
3年くらい前のネイティブSDKが出るのかわからないままiPod touchを触っていた時よりは全然ましな状況だと思い直しました。(あの当時のほうがワクワク感が大きかった気もしますが)

というわけで、気をとりなおして新Flash。ミツバチを歩かせてみました:

| | コメント (0) | トラックバック (0)

2010年4月12日 (月)

iPad用グラフィックツールのUI

ジョブズ、iPhoneアプリの開発制限について直メールで回答
に例のiPhoneOSの制限に対するジョブズの回答が載っていました。曰く:
「プラットフォームと開発者のあいだに中間レイヤーを置けば、結局は水準以下のアプリを生みプラットフォームの進歩を妨げる。」

続きを読む "iPad用グラフィックツールのUI"

| | コメント (0) | トラックバック (0)

より以前の記事一覧