2010/12/16: XCodeでスクリーンセーバーを作る時のデバッグ方法
Xcde上でObjective-CでMacOSX用のスクリーンセーバーを作成する際のデバッグ方法で苦戦したのでメモです。XcodeのScreenSaverテンプレートで新規プロジェクトを作り、実行時にNSLogを使って出力するまでの方法をまとめます。
環境:
MacBook
MacOS 10.6.5
XCode 3.2.4
SaverLab1.7.4
1)XCodeで「ScreenSaver」テンプレートから新規プロジェクトを作成します。(例としてプロジェクト名「TestSaver」とします)

2)animateOneFrameの中にNSlogで出力用のコードを書きます。

3)この段階で一度ビルドします。ビルドを実行するとスクリーンセーバーファイル「TestSaver/build/Debug/TestSaver.saver」が作成されるので、これをダブルクリックしてインストールします。インストールできたら環境設定パネルは終了してください。

5)次に、SaverLabというアプリケーションをダウンロードしてきて、解凍後Applicationフォルダにインストールします。
> SaverLab
6)XCodeに戻って、「グループとファイル」のカラムで右クリックし、プロジェクトに「新規カスタム実行可能ファイル」を追加します。

7)ポップアップで、先ほどインストールした「SaverLab」のアプリケーションファイルを選択し、「完了」を押します。

8)カラムに「実行可能ファイル」が追加されたら、今度は「概要」のプルダウンから「アクティブアーキテクチャ」を「i386」に変更します。理由は理解できていませんが、その他だとエラーが出てビルドできませんでした。

9)「ビルドと実行」が有効になっているはずなので、実行します。
10)SaverLabが立ち上がるはずなので、一覧の中から「TestSaver」をダブルクリックして立ち上げます。すると、コンソールが立ち上がって出力されるはずです。コンソールが立ち上がらない場合はメニューから「Control > Show Console Window」で開いてください。Preferenceで自動的にコンソールを立ち上げる設定にも出来ます。

以上です。
注意点としては、実行する前に一度ビルドしてインストールを済ませてからでないと、うまく出力されないこと。SaverLab単体では同じく出力されず、XCodeから実行しないといけない点です。もしかしたら、後者は別の手だてがあってもおかしくないと思うのですが、調べられたのはここまででした。ソースを編集して、再び試したい場合は、再度3)の手順から行う必要があります。スクリーンセーバーのデバッグって面倒ですね。
※ もっといい方法があったら、ぜひ教えてください!
環境:
MacBook
MacOS 10.6.5
XCode 3.2.4
SaverLab1.7.4
1)XCodeで「ScreenSaver」テンプレートから新規プロジェクトを作成します。(例としてプロジェクト名「TestSaver」とします)

2)animateOneFrameの中にNSlogで出力用のコードを書きます。

3)この段階で一度ビルドします。ビルドを実行するとスクリーンセーバーファイル「TestSaver/build/Debug/TestSaver.saver」が作成されるので、これをダブルクリックしてインストールします。インストールできたら環境設定パネルは終了してください。

5)次に、SaverLabというアプリケーションをダウンロードしてきて、解凍後Applicationフォルダにインストールします。
> SaverLab
6)XCodeに戻って、「グループとファイル」のカラムで右クリックし、プロジェクトに「新規カスタム実行可能ファイル」を追加します。

7)ポップアップで、先ほどインストールした「SaverLab」のアプリケーションファイルを選択し、「完了」を押します。

8)カラムに「実行可能ファイル」が追加されたら、今度は「概要」のプルダウンから「アクティブアーキテクチャ」を「i386」に変更します。理由は理解できていませんが、その他だとエラーが出てビルドできませんでした。

9)「ビルドと実行」が有効になっているはずなので、実行します。
10)SaverLabが立ち上がるはずなので、一覧の中から「TestSaver」をダブルクリックして立ち上げます。すると、コンソールが立ち上がって出力されるはずです。コンソールが立ち上がらない場合はメニューから「Control > Show Console Window」で開いてください。Preferenceで自動的にコンソールを立ち上げる設定にも出来ます。

以上です。
注意点としては、実行する前に一度ビルドしてインストールを済ませてからでないと、うまく出力されないこと。SaverLab単体では同じく出力されず、XCodeから実行しないといけない点です。もしかしたら、後者は別の手だてがあってもおかしくないと思うのですが、調べられたのはここまででした。ソースを編集して、再び試したい場合は、再度3)の手順から行う必要があります。スクリーンセーバーのデバッグって面倒ですね。
※ もっといい方法があったら、ぜひ教えてください!
2010/11/21: Xcodeのキーショートカットに「行の複製」を追加
Xcodeでは、デフォルトで「行の複製」コマンドがありません。なので、キーショートカットのプロパティリストを編集してキーコマンドでできるようにしましょう。
1
キーショートカットの設定がデフォルトのものしかない場合は、
Xcode > 環境設定 > キーバインド
の「キーバインドセット:」の項目で、
「Xcode デフォルト」を選択した状態で「複製」ボタンを押下。
任意の名前をつけて保存したら、「適用」もしくは「OK」を押下。
2
˜/Library/Application Support/Xcode/Key Bindings
に、先程保存した名前で拡張子が「.pbxkeys」というファイルがあるので、これをPlistEdit Proで開きます。
3
XML形式でショートカットキーとコマンドがセットになっているので、ここに「行の複製」を追加します。
今回はキーコマンド「Ctrl+Shift+D」とします(※)。
New ChildやNew Siblingを使って、Keyを「^$D」Classを「Array」とした要素をまず作成し、その子供に次の要素を追加します。
selectLine:
copy:
moveToEndOfLine:
insertNewline:
paste:
deleteBackward:

※「Shift+Command+D」は「ファイル > すばやく開く」で使用されているため避けます。
4
Xcodeを再起動して設定完了。
参考:http://viva.viva-mambo.co.jp/obj-c4aser/index.php?Xcode#g850b828
1
キーショートカットの設定がデフォルトのものしかない場合は、
Xcode > 環境設定 > キーバインド
の「キーバインドセット:」の項目で、
「Xcode デフォルト」を選択した状態で「複製」ボタンを押下。
任意の名前をつけて保存したら、「適用」もしくは「OK」を押下。
2
˜/Library/Application Support/Xcode/Key Bindings
に、先程保存した名前で拡張子が「.pbxkeys」というファイルがあるので、これをPlistEdit Proで開きます。
3
XML形式でショートカットキーとコマンドがセットになっているので、ここに「行の複製」を追加します。
今回はキーコマンド「Ctrl+Shift+D」とします(※)。
New ChildやNew Siblingを使って、Keyを「^$D」Classを「Array」とした要素をまず作成し、その子供に次の要素を追加します。
selectLine:
copy:
moveToEndOfLine:
insertNewline:
paste:
deleteBackward:

※「Shift+Command+D」は「ファイル > すばやく開く」で使用されているため避けます。
4
Xcodeを再起動して設定完了。
参考:http://viva.viva-mambo.co.jp/obj-c4aser/index.php?Xcode#g850b828