タグ別アーカイブ: Xcode

XCode6-beta2で作ったAD-Hoc用ipaファイルがインストール出来ない件

まぁ表題どおりなんですけど。
itunesからインストールしようとしても、WEBからインストールしようとしてもダメなんです。
なんでかな〜とGoogle先生にたずねていたらこんな方法で対応できるようです。

/adhoc_release/testapp.ipa がXCodeから出力されたipaファイルだとすると
(パスは適当に権限のあるところでね)

ditto -xk /adhoc_release/testapp.ipa /adhoc_release/temp
ditto -ck –norsrc /adhoc_release/temp /adhoc_release/testapp_repacked.ipa
rm -r /adhoc_release/temp

これで出力された testapp_repacked.ipa を testapp.ipa にリネームしてインストールするとOK

新言語”Swift”をさわってみた

Appleが満を持して発表したOSX・iOS用の新言語「Swift」
ちょっとさわってみた感じでは
・構文がとてもシンプルで分かりやすい!
・最近のトレンドも取り込まれていてなかなかのパワフルさ!
・実行速度もobjective-cより速い(らしい)
・関数言語っぽい所もある
・メモリ管理もARCでラクチン
・Cocoaの呼び出しも大丈夫そう
・これで大カッコのネストから開放される!!
かなり期待大!
これからiOSでアプリつくろうって人はSwiftで良いのではないだろか?

コードはこんな雰囲気

// varで宣言すると変数
// ※型推論によって多くの場合には型を省略できる。便利!
var scoreMath = 78

// letで宣言すると定数となる
let scoreEnglish = 43
// なのでletでは再代入するとエラーとなる
//scoreEnglish = 100



// 文字列の扱いが簡単になった
let textMath = "数学:" + String(scoreMath)

// 文字列へ変換するときにバックスラッシュで直接変数を書ける
let textTotal = "合計:\(scoreMath + scoreEnglish)です!"
NSLog(textTotal)



// arrayの宣言
var citylist = ["kanazawa","komatsu","nanao"]
let sweetslist = ["cake","candy"]

// varでもletでも下記のように代入可能
// もちろん添字の最大値を超えるとエラーとなる
citylist[0] = "angir"
sweetslist[1] = "キャンディ"

// varで宣言されたarrayには要素を追加できる
citylist.append("wajima")



// Dictionary(マップ)の宣言
// key:valueで初期化する
// もちろんこれも型推論してくれる
var population = [
    "kanazawa":460000,
    "komatsu":100000,
    "nanao":50000
]
let finisher = [
    "キン肉マン":"マッスルスパーク",
    "ロビンマスク":"ベルリンの赤い雨"
]

// varで宣言されたDictionalyには要素を再設定できる
population["kaga"] = 60000
// letで宣言されたDictionalyではエラーになる。。arrayではletであっても変更出来るのにね。
// finisher["ペンタゴン"] = "クロノスチェンジ"


// 関数の宣言はこんな感じ
// 関数の中に関数を書いたりも出来るよ
func pickPopulation(cityname:String) -> Int {
    // ? はOptionalっていうC#のnullable、scalaのOptionみたいなやつ
    // (もっとシンプルな書き方もあるよ)
    let popOpt:Int? = population[cityname]
    if popOpt {
        let pop:Int = popOpt!
        return pop
    } else {
        return 0
    }
}


// ループ
var totalpopulation = 0
for city in citylist {
    totalpopulation += pickPopulation(city)
}
NSLog("人口:\(totalpopulation)")

Cとかjavaとか書ける人なら全然問題無いと思います。

ただ、現状XCodeがベータ版ってこともあってか、
 入力補助がちゃんと効かなかったり。
 エディタが構文解析中にエラーで落ちたり。
 言語仕様的には書けるはずのものが実装されていなかったり。
します。
正式版が待ち遠しい。

iOS7.1からAdHoc配信が出来なくなった!

今までフツーに出来ていたアドホック&OTAでのアプリの配布(開発版ね)が急に出来なくなった。

「・・・の証明書が有効ではないため、Appをインストールできません。」

とか。

はぁ?
ちょっと焦りましたけど、どうやらiOS7.1からはHTTPSサイトのみでOTA配信が許されるようです。

配布サイトにSSL証明書(共有SSLでもOK)を設定して無事解決!

やっぱりバグだったのか。。。

XCode5にしてからなぜかデバッグ中に落ちる事が頻発してたんです。
今まで正常に動いてたプログラムも含めて落ちまくる!

デバッガを使わずに実行すると特にエラーもなく実行できていたのですが、なんとも気持ち悪い。
傾向としてはiOS7用の端末では落ちないけど、iOS6以前の端末では落ちる。
なんかフレームワーク的な部分でかわっちゃったんだろな〜(遠い目
と対応方法に苦慮していたのですが、アップデート画面でこんなものが。。。

xcodeupdate20131112

・Fixes a crash that could occur while debugging on devices running iOS6.

やっぱりね!

Xcode5でDeploymentTargetを変更する方法

Xcode5で新規プロジェクトを作るとDeploymentTargetが7.0になっています。
まぁそれはいいんですけど、さすがに7.0以降しか対応しないアプリはまだ時期尚早だと思うので、6.0とかに変更したいのですがプルダウンからは7.0しか選択出来ず。。。

どーしたらいいんだよ〜〜〜!
アップルをちょっと憎たらしく思いながら調べてみると、どうやら対象のアーキテクチャにarm64が入っている時は64bit対応の7.0以降しか選択できないようになっているみたいです。

Build SettingsのArchitecturesを「Standard architectures(armv7,armv7s)」に変更すると昔のOSをDeploymentTargetで選択できるようになりました。
よかったよかった。