Hatena::Groupiphone-dev

haoyayoi Dev Style このページをアンテナに追加 RSSフィード

2009-10-03

ビルド時にClangを自動で実行させる

| 22:45 | ビルド時にClangを自動で実行させる - haoyayoi Dev Style を含むブックマーク はてなブックマーク - ビルド時にClangを自動で実行させる - haoyayoi Dev Style ビルド時にClangを自動で実行させる - haoyayoi Dev Style のブックマークコメント

現行の最新Xcodeは、ソースコードの静的解析を行うClangがメニューから実行できるようになっています。逐一設定実行する手間が省けて助かる事間違い無しなんですが、毎回clangのために余計な操作をするのは本当面倒です。

余り知られていませんが、このClangも自動で実行できるようになっています。デフォルトで実行がONになっていれば良いとは思うんですが、多分それだと初学者の壁が只管高くなるとかそんな具合だと思います。

設定方法

  1. Xcodeのメニューから、「プロジェクト->プロジェクト設定を編集」の順に選択します。
  2. ビルドオプションの「静的アナライザを実行」にチェックをいれます。

f:id:hao_yayoi:20091003224520p:image

2009-08-29

Snow Leopardインストールで操作が必要になるもの幾つか

| 21:34 | Snow Leopardインストールで操作が必要になるもの幾つか - haoyayoi Dev Style を含むブックマーク はてなブックマーク - Snow Leopardインストールで操作が必要になるもの幾つか - haoyayoi Dev Style Snow Leopardインストールで操作が必要になるもの幾つか - haoyayoi Dev Style のブックマークコメント

Snow Leopardをインストールして、かなり動作がきびきびしているものと思われます。が、それの代償というべきか、色々と環境調整も必要になりました。以下ログのようなものです。

XCodeのインストール

Snow Leopardのインストールディスクにアップグレード版が含まれています。ディスク不良か読み込み不良なのか、いずれの場合でもインストールに失敗した場合はXCode 3 - Snow Leopard - Apple Developers Connection(要ログイン)からダウンロードしましょう。

iPhone SDK for Snow Leopardのインストール

同じくiPhone Developer Connectionよりダウンロードします。

MacPortsのインストール

前準備なしにSnow Leopardにアップグレードしてしまうと、portコマンドを実行しただけでエラーとなります。アップグレード前に一度全て削除推奨です。

(参照:Snow Leopardにアップデートした後に気をつけること)

sudo port -f uninstall installed

うっかり削除する前にインストールしてしまったら、まずSnow Leopard対応インストーラにてインストール。その後、上記の全削除を実行。そして、必要なものを入れていきます。

なお、対応インストーラ導入後に

sudo port upgrade installed

にてまとめてアップデートという手段もありますが、ライブラリによってはアップグレードに失敗してそこから先に進まなくなるものもあるので注意が必要です。

2009-08-01

iPhone OS 3.0.1への実機ビルド対応について

| 10:54 | iPhone OS 3.0.1への実機ビルド対応について - haoyayoi Dev Style を含むブックマーク はてなブックマーク - iPhone OS 3.0.1への実機ビルド対応について - haoyayoi Dev Style iPhone OS 3.0.1への実機ビルド対応について - haoyayoi Dev Style のブックマークコメント

SMS脆弱性に対応するためにiPhone OS 3.0.1のアップデートがきていますが、Xcode自体は3.0までしかバージョン対応なされていません。

これについて何もアナウンスが無い訳でもなく、ADCにOS3.0.1への対処方法がドキュメント化されています。

iPhone OS 3.0.1 Advisory(要ログイン)

対処といってもやることは本当にシンプルです。

なるほどなるほど2009/08/03 20:55たすかりました!(^^)

kimadakimada2009/08/05 22:40先ほどハマりかけたところで、この情報を見て対処できました。ありがとうございます。
ただ、Appleのドキュメントがよくなくて、コピペしろと言っている文字列に改行が含まれているので、一旦、テキストエディタなどにペーストして改行を削除してから、ターミナルにコピペし直した方がいいですね。

2009-04-14

InterfaceBuilderから決別するほうほう

| 22:52 | InterfaceBuilderから決別するほうほう - haoyayoi Dev Style を含むブックマーク はてなブックマーク - InterfaceBuilderから決別するほうほう - haoyayoi Dev Style InterfaceBuilderから決別するほうほう - haoyayoi Dev Style のブックマークコメント

4月からiPhoneアプリ開発のお仕事に就きました。家でも会社でもobjcな毎日です。

開発上、できるだけソースコードの編集だけで色々な改変を行いたいものですが、割とInterface Builderの呪縛があなどれません。慣れると視覚的ですけど、それでもやはり手間です。

業務の開発をしつつ、IBの依存を消す方法を探した結果、とりあえず形になったのでメモ。

main.m

UIApplicationMain()の最後の引数を、xxxxAppDelegateに書き換えます。

int main(int argc, char *argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, @"HogeHogeAppDelegate");
    [pool release];
    return retVal;
}

info.plist

「Main nib file base name」の行をCut

Controller系

initxxxとviewDidLoad、loadViewあたりを継承

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
    }
    return self;
}

- (void)loadView {
    [super loadView];
}

継承しわすれると、画面に何も表示されない場合があるのでほんとに要注意。

多重Controllerの生成

UITabBarController > UINavigationController > UITableViewController という重なり形で生成する場合、UINavigationController内のUITableViewController等のController生成は、UITabBarControllerのinitメソッドか、UIWindow生成時などで一括にて。

やりかたをちょっと誤るだけで、UIViewControllerの無限生成ループが発生することもあります。