2012-02-01から1ヶ月間の記事一覧

他のリストを含むリスト

あるリストに他のリストが含まれている(サブセット)ことを検査する場合、例えばJavaだとList#containsAllを使えば良いがObjective-CのリストにあたるNSArray/NSMutableArrayには同様のメソッドは実装されていないようだ。単一の要素が含まれるか否かを検査す…

Xcode4.3からは/Developer以下がパッケージングされている

Xcode 4.3に上げてからクラスやカテゴリ等のテンプレートのコメントを修正しようと探したが、全く見つからない。一体どうなっているのと調べてみたが、どうやら4.3からXcodeはひとつのアプリケーションのバンドル構造にパッケージ※されており、従来の/Develo…

Xcode 4.3

知らない間にXcodeが4.3になっていた。(2/18にリリースされたらしい) What's New In Xcode: What’s New in Xcode - “New Features in Xcode 4.3”主な変更点はリンク先に記述されている通りで、ツール関係がXcodeに統合されたり、インストール先が/Developer…

バックスラッシュ

Mac

MacBook Airバックスラッシュ"/"のキーは無い。(Windowsの「ろ」のキーには割り当てられていない) 入力するのは日本語環境(+JISキーボード)なら"option+\"だということは知っていたのだが、言語に関わらず入力するにはどうするのだろうと調べると、ことえり(…

module is not part of the build phase of any targets in this workspace

テスト用のモジュールのクラス名を変更しようと思って"Refactoring->Rename"で名前を変更しようとしたのだが、上手くいかない。 意味がわからないなぁと思って調べていたのだが、これもまたXcode固有のバグのようだ。 xcode - "aFile.m" is not part of the …

ランタイムAPI

ここまでKVCやKVOを使ったり実行されているメソッドの情報を取得してきたが、いよいよObjective-Cにおけるクラスのランタイムつまり実行時のメタ情報(メタクラス、プロパティ、フィールド)を取得する要求が出て来た。JavaやC#の場合、リフレクション機能を使…

エンコードされた型

つまりはNSMethodSignature-getArgumentTypeAtIndex:で引数の型、NSMethodSignature-methodReturnType:で戻り値の型が戻るのだが、char*で戻る訳であって最後は文字比較になってしまうのが格好悪い。 格好悪いなんて書いたが、それは違う。やはり私の無知だ…

メソッドの引数の型を調べる

Objective-Cでメソッド(メッセージ)の型を調べることは可能だろうか、またどのようにして実装すれば良いのだろうか。いろいろ調べてみたが、自身が持つメソッド"fooBar:"の引数の個数と型を調べるコードは以下のようになるようだ。 SEL selector = @selector…

KVOのコールバックをセレクタで登録する (その2)

さて、昨日の続きだ。元々Foundationで実装されているKVO監視機構にセレクタの情報を持たせる方法だが、自分で書く前に調べたところやはり同じというかそのものずばりを書いている先輩がいた。※ mikeash.com: Key-Value Observing Done Right このサイトでは…

KVOのコールバックをセレクタで登録する

またまた随分と時間が空いてしまったが、一応続きの話。 このように便利なKVOだが、今ひとつ使いにくい部分もある。 その辺は次回にでも。 KVO監視は便利なのだが、NSKeyValueObserving簡易プロトコルに準拠した以下のメッセージに応答できるようにクラスを…

なんとか静かにしようと

PC

久しぶりにRBEを引っ張り出してファン回転数の閾値を変更してみたのだが、 反映されていないような。マニュアルオーバライドで20%にしたほうが明らかに静かなんだよなぁ。追記: BIOSの設定が反映されないのはどうやらFAQらしい。 「SpeedFan Catalyst driver…

安物買いの..

PC

玄人志向 グラフィックボード Radeon HD6950 1GB PCI-E DVI HDMI Mini-DisplayPort AMD Eyefinity4 空冷ファン 2スロット占有 補助電源6pin×2 RH6950-E1GHW/DP出版社/メーカー: 玄人志向発売日: 2011/03/20メディア: Personal Computers クリック: 2回この商…

シンボリック・ブレークポイント

Unrecognized Selectorのようにどこのメソッドが実行された際に発生したか判り難いエラーの場合、以下のシンボリック・ブレークポイントを作ってやることで、直接的にどこでエラーが発生したかが分かり易くなる。 -[NSObject doesNotRecognizeSelector:]NSOb…

Unrecognized Selector その後

Objective-Cのリンカのバグで、静的ライブラリ内で実装されているカテゴリを呼ぶ場合に同エラーが発生してしまうらしいのだ。 解消方法は、プロジェクトターゲットの"Build Settings"中、パラメタ"Other Linker Flags"に"-ObjC"、更には"-all_load"を追加し…

unrecognized selector

またもや皆が通る試練を受けてしまったようだ。 次のネタにする予定だった、KVOの発展系のテストをしていたのだが、外部に定義したカテゴリのメソッドを使うと何故か例外が発生してメソッドが実行できない。 []:〜unrecognized selector sent to instance 0x…

KVO (Key-Value Observing)

Mac OS Xのプログラミングに詳しい方はとっくにご存じだと思うが、この「プロパティの変更通知機能」はCocoaフレームワークとして既に実装されているのだ。それが Key-Value Observing 略して KVOである。 Key-Value Observing Programming Guide: Introduct…

プロキシ(NSProxy)による変更通知 (その2)

また日が空いてしまったが更に続きを。 //この後やること//プロパティ名から現在のプロパティ値取得//メソッドのパラメタから新たに設定されるはずのプロパティ値を取得//新旧のプロパティを比較して変更されていれば通知 ここを埋めていく。通知するのは後…

Clockwork Recovery Touch Enabled 5.8.0.2

中断されていたdocomo SC-04D GALAXY NexusのOTAアップデートがローリングアウトしたとのこと。 GALAXY NEXUS SC-04Dの製品アップデート情報 | お客様サポート | NTTドコモ※アップデートする前にNANDのバックアップを取ろうと、最新のCloclwork Recoveryを調…

performSelectorとパラメタ数

JavaやC#のInvokeはそのオブジェクトの持つメタ情報からメソッド実行する(メッセージを送る)が、Objective-Cでそれに相当するのがNSObjectプロトコル(クラスではない)performSelector:メソッドだ。メソッドの実態であるセレクタをメタ情報や文字列から生成し…

Xcode4.2がフリーズする

いつの間にか、Xcode(4.2)がフリーズするようになっていた。最初に発生したのはデバッグ中に発生したエラーの直後だったので、まあそういうこともあるかなどとブツブツ言いながらXcodeを強制終了していたのだが、どうも規則性があるようで酷い時は数分〜数十…

プロキシ(NSProxy)による変更通知 (その1)

さて、日が空いてしまったが先日の続き。 プロキシの同メソッドをオーバライドすることでターゲットオブジェクトの処理の前後に処理を挿入することが出来る。 DynamicProxyでターゲットオブジェクトの全てのメッセージに割り込みたかったのは、今までJavaやC…

does not declare a method with selector

NSStringクラスのカテゴリ(クラスエクステンション)を書いていた所、コンパイルで以下のようなエラーに遭遇した。 Receiver type 'NSString' for instance message does not declare a method with selector 'capitalizedFirstOnly' 初心者の私には、まるで…

拗ねたPC

PC

昨日の続きでObjective-Cのネタを書こうと思ったら、PCから「グォォォォォォン」という異音が。Macばかり使っているのでPCが拗ねたのだろう、というのは冗談として、異音の元はどう聞いてもなんらのファンなので、PCに付けてあるファンを一つずつチェックし…

KVC「キー値コーディング」

KFC、いやKVC(キー値コーディング)とはNSKeyValueCoding非形式プロトコルによる、間接的なオブジェクトのプロパティへのアクセスとバリデーションのためのフレームワークを指す。 NSKeyValueCoding Protocol Reference - Mac OS X Developer LibraryNSKeyVal…

NSProxy

JavaやC#でクラスのメッセージに対する振る舞いを動的に変更しようとした場合、必ずといって良い程お世話になるのがProxyクラスだが※、Objective-Cにもちゃんとある。 NSProxy Class Reference - Mac OS X Developer Library NSProxy.h @interface NSProxy <NSObject> </nsobject>…

得体の知れない不快感

Mac

先日、MacBookAirにマウスを接続して使った所、ホイールによるスクロールの向きが逆なので環境設定を見てみるとスクロールの設定で「スクロール又は移動するときに、コンテンツを指を動かした方向に移動させる」がチェックされており、これが原因だと判った…

ようやくアップデートできた

Mac

昨日は時間が無かったので、今日ようやくアップデートすることが出来た。(自宅のMacBook Airの場合ダウンロードファイルのトータルは1.05GBだった)アップデート自体は成功したが、キーチェーンアクセスがリセットされるようで、資格情報の入力が必要な箇所は…

Mac OS X Lion 10.7.3

Mac

アップデートが来ていた。OS X Lion アップデート 10.7.3 About the OS X Lion v10.7.3 Update結構な数のアップデート項目だが、バグフィクスがメインか。私のMacBook Airで気になるのは特にこの辺か。・Address issues when using smart cards to log into …

GALAXY Nexusプレミアムキャンペーン

SAMSUNGはGALAXY Nexusを購入したユーザに対して、モバイルバッテリーとGoogleの意匠によるオリジナルカバーを先着2万名にプレゼントするキャンペーンを開始した。(2012/02/01〜03/31ただし規定の人数に達した場合には締め切られるらしい。)キャンペーンサイ…