Objective-C

iOSで静的ライブラリを使う

Objective-CとC++の両方を混在させてみます。※(注)環境はiOS SDK4.3, Xcode4.1, 動作確認はシミュレータのみ Static Library用プロジェクトを作成する File>New>NewProject>iOS>Framework & Libraries>CocoaTouch>StaticLib.xcodeprojを/に作成 →//StaticLib…

Cocoaアプリでライブラリを使用する方法

CocoaアプリケーションのプロジェクトにC/C++で作成しているStaticLibraryプロジェクトやCocoaFrameworkを組み込む方法についてです。開発環境はXcode 4です。 まず実行ファイルの出力先を相対パスに設定しておきます。 Xcode>Preferences>Locations>Derived…

Cocoaサンプル - ファイルダイアログ

※注意:以下紹介するサンプルはMacOSX10.6以降対応ですので注意してください。 サンプル例: # Fileメニュー>Openを選択するとファイル選択ダイアログが表示され、 Openボタンを押すと選択したファイルパスをコンソールに表示する。 Cancelを押すと何も行わな…

Cocoaサンプル - OpenGLで描画

Cocoaアプリケーションプロジェクトをプロジェクト名"CocoaOpenGL"で作成しておきます。 ライブラリの追加 TARGET>Build Phases>Link Binary With Libraries>"+">OpenGL.frameworkをプロジェクトに追加します。 OpenGLViewの作成 MainMenu.xib>Object Librar…

Objective-C2.0文法メモ セレクタ

メッセージング Objective-Cではコンパイル時にメソッドのアドレスが確定している訳ではなく、メソッドのアドレスを各オブジェクト内のテーブルに記録しておいて、実行時にテーブル内を逐次検索して実行するべきアドレスを選択しています。メソッドを識別す…

Cocoaサンプル - MVC

Xcode4を使ってMVCパターンに則った簡単なCocoaアプリーケーションのサンプルを作成します。 MVC(Model-View-Controller)パターン MVCとは以下の3つの要素からなるアーキテクチャのことです。 Model アプリケーションが利用するデータとその処理を行う部分…

Cocoaサンプル - スレッドと排他処理

スレッド NSThreadクラスを使います。 detachNewThreadSelectorメソッドで起動、exitメソッドで終了します。 別スレッドで実行する関数をセレクタで指定します。mainスレッドとは別なので、スレッドプロシージャー内では改めてNSAutoreleasePoolを準備してお…

Objective-C2.0文法メモ プロトコル

Objective-Cではあるクラスのインターフェースを定義するのにプロトコルという仕組みを利用します。Javaでいうインターフェース、C++では純粋仮想関数によるクラス定義に相当するものです。書式は以下のようになります。 プロトコルの定義 @protocol MyProto…

Objective-C2.0文法メモ カテゴリ

Objective-Cでは既存のクラスに動的にメソッドを追加することができるカテゴリという仕組みがあります。この方法を用いると派生クラスを新たに作成せずに簡単にクラスを拡張することができます。 カテゴリの定義 既存のクラスMyClassが定義されているとしま…

Xcode4でメモリーリークを検出する手順

メモリーリーク Xcode4でメモリーリークをチェックするには、実行中の各種状態を可視化できるinstrumentsというツールのメモリリーク画面で確認することができます。(instrumentを起動してみるにはProduct>Profileを選択してください) Xcodeの左上Runボタン…

Objective-C2.0メモ メモリ管理

Objective-Cのメモリ管理について C言語でメモリ管理をするにはmalloc, freeを使いますが、Objective-Cでは、オブジェクトの参照数を考慮したメモリ管理の仕組みが用意されています。現在いくつ参照されているのかを把握し続けるために、全てのオブジェクト…

Objective-C2.0文法メモ クラス(その2)

継承 クラス間の継承を実現するには、インターフェースの宣言に以下のように記述します。 @interface SubClass : SuperClass 基底クラスAnimalと、それを継承したCatクラスを作成してみます。 Animal.h #import <Foundation/Foundation.h> @interface Animal : NSObject { int age; } </foundation/foundation.h>…

Objective-C2.0文法メモ 〜 C言語のおさらい

Objective-Cを学ぶ前に、一通りC言語の文法を見直してみます。 C言語文法まとめ コメント // コメント /* コメント(複数行) */ 変数と変数の型・キャスト unsigned char uc; char c; unsigned short s; short us; unsigned long ul; long l; unsigned int ui…

Objective-C2.0文法メモ 基本事項いろいろ

Hello World まずはプロジェクトを作成してみます。 File>New>New Project>Command Line Tool>"Next">プロジェクト名"Hello", Type:Foundation>パスを指定して"Create" 実行するとコンソールに"Hello World!"と表示されます。 main.m #import <Foundation/Foundation.h> int main (int</foundation/foundation.h>…

Objective-C2.0文法メモ クラス(その1)

Objective-CはC言語にオブジェクト指向の概念を取り入れた言語ですので、クラスを利用することができます。 クラスの定義(インターフェース部分) interface−endで囲みます。 書式:MyClass.h @interface MyClass : NSObject { type field; // メンバ変数に相…