人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

iOSアプリ開発時のOSバージョン互換性に関して質問です。

iOS8がリリースされてまだ間もない頃に書かれた以下の技術情報を読んだのですが

・iOS 8から位置情報を取得する方法が変わるよ
(http://qiita.com/koogawa/items/6ec24ca3201977e9642b)
・Xcode6でiOS8へPush通知が送れない場合の解決方法
(http://qiita.com/peromasamune/items/90970e9f9d5c34d21cfd)

(2つ目のリンクに書かれて通り)なぜ,同じソースコードを使っていても
Xcode5でビルドしたiOSアプリはiOS8で正常に動いて
Xcode6でビルドしたiOSアプリはiOS8で挙動がおかしくなるのか理解できません。

おそらく,ビルド時に使うBase SDKのバージョンが関係していると思うのですが
Base SDKとビルド後に生成されるバイナリ,バイナリを実行するOSバージョンの
関係性を私がよく理解していないせいだと感じています。
(AppleのSDK互換ガイドを読んでもいまいちピンと来ません……)

何か理解が深まるアドバイスをいただければと思っています。

●質問者: cross-xross
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● alfa-gadget
●100ポイント ベストアンサー

Xcode5 と Xcode6 のライブラリが違うからです。
ビルドというのはソースコードをコンパイルしただけではなくライブラリとリンクすることも含みます。
ソースをコンパイルしてビルドしたバイナリ+Xcodeのライブラリ+OSのバイナリで動作が決まります。


cross-xrossさんのコメント
回答ありがとうございます。 ビルド時にリンクされて最終的に実行されるのは デバイス側(iOS)が保持しているフレームワーク群ですよね? (少なくともアプリのバイナリ自身はフレームワークを同梱しないので) となった場合,Xcodeのライブラリ(BaseSDK?)は何をやっているのでしょうか? 実行先のOSが保持しているフレームワークとXcodeライブラリの関係について もう少し補足で教えていただけると助かります。 # XcodeやiOSの固有名詞で挙げていただくと理解しやすいです。

alfa-gadgetさんのコメント
iOS 側に持っているのはフレームワークだけではありません。 カメラやGPS、オーディオなどのデバイスとのデータのやり取りや、基本的なファイルへの読み書き、SQLite という簡易データベースなど色々とあります。 SDK のライブラリは、iOS 側の機能を呼び出すだけの薄いラッパー関数のこともあります。 複数の機能を呼び出す必要がある場合には、ひとまとめにして簡単に利用できるようにしたり、 データのバッファリングなどをしてパフォーマンスを高めたりなど、色々な役割を持ちます。

cross-xrossさんのコメント
補足ありがとうございます。 おぼろげながら理解出来てきました。 Xcode(≒Base SDK)を変更することで 同じ名前のクラスやメソッドでも(API Diffに載らないレベルで)微妙に 挙動が変わっている可能性がある。 例えば,Base SDK8では,クラスの内部でiOS8を判定して 処理を制御(例:実行抑止)するようなロジックが追加されており Base SDK7ではそのようなロジックが存在しなかった……のだとしたら 古いXcodeでビルドすれば正常に動くというのも理解できます。 iOS内部ではコアな機能(デバイス制御やIO等々)を持っており それを操作するためのライブラリ群としてiOS SDKが存在しており 同じコア機能を利用する場合でもiOS SDKのバージョンが変わると アプリの挙動も変わりうるということですね。 認識に大きな差異がなければクローズさせていただきたいと思います。

alfa-gadgetさんのコメント
返信が遅くなり済みません。 認識はあっていると思います。 混乱させるといけないので前のコメントでは書きませんでしたが、下位互換をとるというのもライブラリには重要な要素です。 手順の差やパラメータの読み替え程度であればライブラリで吸収できるのですが、質問に書かれた位置情報の取得ではできないのか、それとも単にやっていないだけなのかが分かりませんね。

cross-xrossさんのコメント
いえいえ,ありがとうございます。 認識が合っていたようで安心しました。 iOS SDKは非オープンソースなので 実際に動かしてみた結果から判断するしかなさそうですね。 助かりました!

2 ● blue_star22
●0ポイント

ライブラリという用語の意味を調べてください。


cross-xrossさんのコメント
人力検索で質問している意味を考えてください。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ