備忘録

開発でつまったところの備忘録.不定期に更新します.

Objective-C

cgcolorrelease(cgImage)でassertion failedする問題

iOS上でのOpenCVの、UIImageとmatを変換するときに cgColorRelease(cgImage) という処理をするのですが、 これが Assertion failed: (!space->is_singleton), function color_space_dealloc, file ColorSpaces/CGColorSpace.c.... みたいなエラーをはいて落…

iOS上でOpenCVを動かす

iOS上のOpenCVは糞って聞いた覚えがあるのですが、とりあえず必要だったのでやってみました。 導入は http://www.casleyconsulting.co.jp/blog-engineer/iphone/cocoapodsとopencv-2-4-6で始める画像処理-for-ios/ を習って、cocoaPodsを使ってプロジェクト…

キー値コーディング

キー値コーディングとはオブジェクトが持つ情報を表す文字列をキーとして用いて間接的にその値にアクセスする仕組みです。基本的にはアクセサメソッドか宣言プロパティ、またはインスタンス変数が存在していれば、その名前を文字列として指定してアクセス可…

通知センター

何かの事象の発生を複数のオブジェクトに発信したいとき、通知と呼ばれるメッセージ送信方式を使います。 プログラム内に通知センタと呼ばれるオブジェクトが用意されており、あるオブジェクトがメッセージ送信の依頼を通知センタに送る(ポスト)と、その通…

デリゲート

デリゲートは簡単に言うと、あるオブジェクトが別のオブジェクトに処理を代行してもらう機構です。 既存のクラスに新しい機能を付け加えたり、情報を取得して利用するための柔軟性の高い仕組みとして便利に使うことができます。継承でも同様なことは実現でき…

ブロックオブジェクトまとめ

ブロックオブジェクトはObjective-CではなくC言語の機能として実装されています。 他のプログラミング言語ではクロージャとして知られている言語機能に相当します。 ・定義(ブロックリテラル) ^( 引数列 ) { 本体 } ・変数宣言 返り値の型 (^ブロック変数)…

無名カテゴリを用いたprivateなproperty宣言について

これもよく忘れるのでまとめときます まずカテゴリとは あるクラスの一部分のメソッドを実現するモジュールのこと で、具体的には @interface クラス名 (カテゴリ名) メソッド宣言; @end @implementation クラス名 (カテゴリ名) メソッドの定義; @end で書き…

プロパティ変遷まとめ

なんども忘れるので一回まとめときます ・昔 @interface A : NSObject { int member; //インスタンス宣言 } @property (retain) member; //プロパティ宣言 @end @implementation A : NSObject { @synthesize member; //セレクタ(インスタンス、アクセサ宣言…

objective-cでのprivate宣言

@interface A : NSObject { id protected; @public id public; @private id private; } - (id) method1; @end @implementation A { id private2; } - (id) method1{ ..... } このときprivate2はヘッダーに現れないので実質隠蔽されてprivateと同じ扱いになり…