Hi-farm blog

ActionScript 3.0 , AIR , FLEXからCocoa, OpenGL

iPhoneのSimulatorと実機での違い

iPhoneアプリの開発をしていてハマった事がまたありましたので残しておきます。

Objective-Cで、
例えばクラスAの@interface部で@protectedとして宣言していた変数aをサブクラスで呼ぶ場合、通常であればそのまま使えるはずなのですが、実機に向けてビルドするときにはエラーになってしまいました。

これは調べてみるとどうやら、
・シミュレータではデフォルトの設定が@protected
・実機ではデフォルトが@private
と言う事に原因がある様です。(そういった差が生まれないように@で明示的に宣言したつもりだったのですが)

最善の解決策ではないですが、-(id)gethoge;といったメソッドを作成しました。
カプセル化がしっかりできていないとは思うのですが、これでひとまずはエラー出ずにビルドし、問題なく動作するようになりました。

参考URL(StackOverflow:英語):
http://stackoverflow.com/questions/5513605/inheritance-working-on-simulator-but-not-on-iphone

iPhoneの実機に転送できない

開発中のアプリをiPhoneの実機に転送できなくて、はまっていました。
根本的な解決をしたわけではないですが、あまり情報がみつからなかったので同じようにはまった人の助けになればとおもって残しておきます。

まず、僕が出会ったエラーは

The executable was signed with invalid entitlements.

The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile.

というものでした。
こちらのサイト様(iPhoneアプリ開発の備忘録)ではクリーンビルドする方法を示されていましたが、僕のサイトではそれでは解決しませんでした。

僕の場合はiOSのバージョンをあげた事が原因なのか(4.3.5にアップしました。)provisioningファイルがiPhone実機とあっていなかったみたいなので、Provisioning Portalから再度Provisioningファイルを作成し、Organizerにインストールして無事に実機へ転送する事ができました。

  • 0 Comments
  • Filed under: iPhone
  • [iOS] UIViewの背景画像を設定する

    iPadアプリを現在作っているのですが、背景画像の設定方法がわからなくて、Interface Builder上のいちばん下にUIImageViewを貼付けていたりしたのですが、他のパーツを動かすときにいちいち選択状態になって邪魔だったり、そもそも余分なインスタンスを持ってしまうのでバグが発生しやすくなるかも?という事でなるべく避けたかったので調べていたら、UIColorに画像を指定する方法を見つけました。
    ほぼ100%こちらのブログを参考にさせていただいています。。すみません。

    http://r-force.seesaa.net/article/164146136.html

    使用方法はこんな感じです。background.pngってのは背景画像として使う画像ですよ。

    UIImage *backgroundImage = [UIImage imageNamed:@"background.png"];
    self.view.backgroundColor = [UIColor colorWithPatternImage:backgroundImage];
    [backgroundImage release];

    要するに、UIImageをUIColorのcolorWithPatternImage: を使う事で設定できる、という事ですね。
    ActionScriptで言うところのbeginBitmapFill();みたいなものであり、
    WPF/Silverlightで言う所のImageBrushって所でしょうかね。

    これで簡単に背景画像を設定できるようになったので、リンク先にもあるようにどこまで応用できるかで外観のカスタマイズがどこまでできるか、というのが解りそうですね。

  • 0 Comments
  • Filed under: iPad, iPhone
  • 現在作っているアプリでは、iPhoneからファイルとデータをアップロードする仕組みが必要になり調べてみたのですが、なかなか目的を達成してくれるクラスやライブラリが見つからなかったので自分で作ってみました。
    ソースとテストで使ったPHPのファイルもgithubのここにおいています。
    http://wiki.github.com/mmlemon/HTTPMultipartPost

    ソースにはcopyrightとか書いていますが、改編などはご自由にどうぞ。ただし、こちらではいかなる責任も負いませんのでご了承下さい。

    内容は、こんな感じです。

    MultipartPostHelper:このクラスを使ってファイルのアップロードを行います。
    実際の使い方は、HTTPPostSample2ViewController.mをご確認下さい。

    使用する流れは下記の通りです:

    1. 送信先URLを設定する
    2. 文字列データ部分を作成する(Key用の配列と値用の配列が必要です。)
    3. バイナリデータ部分を作成する(このとき、data=実際のデータ:NSData、orgName:ファイル名、postName:Postで使われる名前。例:orgName=”file.txt”, postName=”postFile”の場合、PHPでは、$_FILES["postFile"]["name"]とすると、”file.txt”が返されます。)
    4. 文字データをMultipartPostHelperに追加
    5. バイナリデータをMultipartPostHelperに追加
    6. sendで送信

    以上です。

    さて、先日2009.02.14-02.15の間、自分のちょっとしたつぶやきから始まった『iPhoneアプリ開発合宿』に行ってきました。
    場所は箱根、強羅 一の湯。
    http://www.ichinoyu.co.jp/gora/

    twitter上で呼びかけ、twitter上でやりとりしている方や知り合いの方合計5人で開催されました。
    参加者は実際にiPhoneアプリを作っている人だけで、普段はなかなかきくことができないObjective-Cの話をする事ができました。

    今回の合宿は、あくまで各自作りたいもの、やりたいことがあって、同じ場所でそれぞれの目標に向かって一日作りましょう、という主旨でした。
    それぞれが作った(作ろうとした)アプリについてはどこまで何を書いてよいのかわからないので、大まかに書いておくと、

    • フリックさせて画面を次々と切り替えるアプリ(こうかくと普通ですが、アイディアがすごく素敵で、app storeに公開された後の展開が楽しみなアプリです!)
    • 心が安らぐ環境系(?)アプリ(こちらもアイディアが素敵で、デザイナーの方とタッグを組んでアプリを作っている事が特に印象的でした。)
    • hirataraさん:http://d.hatena.ne.jp/hiratara/ は、弾幕ゲームアプリ(OpenGL ESを使っています)
    • 画像ビューワーアプリ(コンポーネントの自作にチャレンジされていました。)

    で、僕はここ最近取り組んでいるOpenALを使ったアプリの開発を続けました。(完成にはたどり着けなかったですが、そこそこ進めることができました)

    なんと『インターネットが使えない』という問題があったものの、豊富な経験とバックグラウンドを持っているメンバーが集まったおかげで、各自メインテーマが違っていたり、ネットが使えなかったりしながらもみんなで協力しながら開発を続けることができ、いい刺激になりました。
    特に、appleのサンプルソースがいかに優れているかという事を実感しました。

    また、チェックイン15:00のチェックアウト12:00であることもあり、夜中まで頑張っていました。
    途中で温泉につかったり、飲める人はお酒を呑んで開発を続けたり。意外とお酒を呑んでもみんな開発を続けていたのがとても印象的でした。

    何より、みんなで集まってiPhoneアプリ作りができる、という環境が今まで無かったのでとても濃く、充実した時間を過ごす事ができました。

    これからiPhone合宿が色々と開催されたり、この会も第二回目が開催されますが、iPhone開発している人と沢山であって、良い刺激を受けたいと思っています。

    合宿 夜中の風景

    夜中の風景。広い部屋に5人なのでそれぞれ自分のスペースで作業してました。

    飲酒後ですが意外にもエンジンがかかってました。

    合宿 朝の風景

    合宿 朝の風景

    そして朝。Emobileが赤いのが何とも残念ですね。(EMobileが圏外という事です)

    箱根登山鉄道

    箱根登山鉄道

    箱根登山鉄道。スイッチバックを堪能しまくりでした。

    また次回も開催予定ですので、今回参加された方&興味のあるかたは是非一緒に合宿しましょう!
    参加された方へ:初幹事でいろいろと御迷惑おかけしてと思いますがありがとうございました。これからもよろしくお願いします。