iOSアプリ開発の基礎的な情報や注意点など


 ここでは iOSアプリ開発に関するの基礎的な情報や注意点などを載せます。

1.iOSアプリで使用するファイルの追加方法

2.iOSアプリで使用する文字コードは『UTF-8』であることについて

3.iOSアプリのセーブファイルを保存するフォルダーパスについて

4.定義済みマクロ __APPLE__ を使った Windowsアプリとのプログラムファイルの共有について



1.iOSアプリで使用するファイルの追加方法

   Windowsソフトではソフトで使用する画像ファイルやサウンドファイルは実行ファイルと同じフォルダや、
  実行ファイルと同じフォルダに置いたフォルダの中に配置したりしますが、iOSアプリはビルドすると
  拡張子 app のファイルにアプリの実行に必要なファイルが全部入る仕組みになっているため、
  Windowsソフトと異なり iOSアプリはアプリ内で使用するファイルを iOSアプリのプロジェクトに
  追加
する必要があります。

  ① Xcode のプロジェクトを開いた状態で、メニューから『File』→『Add Files to "(プロジェクト名)"...』をクリックします。

  ② すると追加したいファイルを選択するためのダイアログが表示されますので、追加したいファイルを選択してから『Add』ボタンを押します。

   以上です、プロジェクトに追加したファイルは iOSアプリの appファイルに含まれることになり、iOSアプリのプログラム内で LoadGraph や
  LoadSoundMem などの関数を使用して読み込めるファイル
となります。

 尚、Windowsソフトと異なりファイル名の英語の大文字・小文字が区別されますのでファイル名の指定の際は気をつけてください。



2.iOSアプリで使用する文字コードは『UTF-8』であることについて

   この項は主に普段 Windowsアプリを開発している方に向けたものとなります。

   Windows で普段何気なく使用している txt, cpp, h などのテキストファイルは特に指定をせずに保存すると
  文字コード『シフトJIS』形式で保存されますが、Mac の OSX や iOSアプリでは『シフトJIS』形式ではなく
  文字コード『UTF-8』形式が使用されているので、全角文字を含む文字列を 1文字づつ処理するような場合は注意が必要です。

   というのも、『シフトJIS』では半角文字は 1バイト、全角文字は 2バイトなのに対し、『UTF-8』では半角文字は同じく
  1バイトですが、全角文字は概ね 3バイトと、全角文字のバイト数が異なる他、「全角文字なのか、半角文字なのか」の
  判別方法も異なる
からです。
  ( 因みに 1文字のバイト数については、DXライブラリの 1文字のバイト数を取得するための関数『GetCharBytes』を
   使用すると便利です )

   この他、主に WindowsアプリiOSアプリ移植する際に文字コード関連で必要な作業や、文字コードの詳しい解説を
  こちらに纏めましたので、よろしければご覧ください。

  『WindowsアプリとiOSアプリでは使用する文字コードが異なることについて



3.iOSアプリのセーブファイルを保存するフォルダーパスについて

   iOSアプリで RPG のセーブデータや STG のスコアデータを保存したりするフォルダのパスを取得するには
  iOS専用の関数『GetLibraryPreferencesDirPath』を使用します。
// アプリのデータ保存用のフォルダーパスを取得する // PathBuffer : フォルダーパスを保存する char 型配列のアドレス // PathBufferBytes : フォルダーパスを保存する char 型配列のサイズ( バイト単位 ) int GetLibraryPreferencesDirPath( char *PathBuffer, int PathBufferBytes ) ;
   取得できるフォルダーパスは
/Users/yamada/Library/Developer/CoreSimulator/Devices/E6B601FE-5660-327A-903F-8F96B44EE096/data/Containers/Data/Application/75443635-7651-3742-368A-6A8C8008DF2A/Library/Preferences
  のような文字列となっています。これを使用して fopen でセーブファイルなどを開く場合は以下のようにします。
FILE *fp ; char FilePath[ 256 ] ; // GetLibraryPreferencesDirPath でデータセーブ用のフォルダーパスを取得 GetLibraryPreferencesDirPath( FilePath, sizeof( FilePath ) ) ; // 『スラッシュ文字 + セーブファイルパス』を文字列の後ろに付ける strcat( FilePath, "/SaveFile.bin" ) ; // ファイルを書き込み新規作成( "wb" )で開く( 読み込みの場合は "rb" ) fp = fopen( FilePath, "wb" ) ; // ファイルが開けたかチェック if( fp != NULL ) { // ファイルが開けた ~~~~ fread や fwrite でファイルを読み込み、又は書き込み ~~~~ // ファイルを閉じる fclose( fp ) ; }
   因みに、この関数で取得できるパスが示すフォルダはシミュレーターの場合は普通に Finder で見ることができますが、 実機の場合は
  普通には閲覧することができないフォルダとなっています。



4.定義済みマクロ __APPLE__ を使った Windowsアプリとのプログラムファイルの共有について

   iOSアプリの cpp ファイルをコンパイルする際は、特に指定が無くても『__APPLE__』というマクロが
  定義されていますので、これを使って Windowsアプリと iOSアプリでソースファイルを共有することができます。

   例えば、プログラムのエントリーポイントは Windowsアプリの場合は WinMain関数、iOSアプリは ios_main関数
  なので、これを『__APPLE__』が定義されているかどうかで以下のようにコンパイルされるコードを分ければ
  Windowsアプリでも iOSアプリでも使用できる cpp ファイルになります。
#include "DxLib.h" #ifdef __APPLE__ // iOS版のコンパイルだったら ios_main int ios_main( void ) #else // Windows版のコンパイルだったら WinMain int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) #endif { int GrHandle ; #ifndef __APPLE__ // Windows版のコンパイルだったら ChangeWindowMode を実行する ChangeWindowMode( TRUE ) ; #endif // DXライブラリ初期化処理 if( DxLib_Init() == -1 ) { // エラーが起きたら直ちに終了 return -1 ; } // BMP画像の読み込み GrHandle = LoadGraph( "test1.bmp" ) ; // 描画先を裏画面に変更 SetDrawScreen( DX_SCREEN_BACK ) ; // 背景色をグレーに変更 SetBackgroundColor( 128, 128, 128 ) ; // メインループ while( ProcessMessage() == 0 ) { // 画面をクリア ClearDrawScreen() ; // BMP画像の描画 DrawGraph( 0, 0, GrHandle, TRUE ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリ使用の終了処理 DxLib_End() ; // ソフトの終了 return 0 ; }



戻る