BWToolkit - Interface Builder Plugin for Cocoa on Mac OS X
ブログコメントで教えてもらった情報。
Interface Builder 用のプラグインが用意されているので、GUIでレイアウトや設定が行える。デザインも綺麗でこれは使ってみたい。
作者のブログ
Brandon Walkin
デザインに関する考察があったりしてなかなか面白い。
How do I ask for the default temporary directory on Mac OS X? - Stack Overflow
Mac OS X でテンポラリディレクトリを使う方法について。/tmp は使わずに NSTemporaryDirectory( ) を使う。tempnam(), tmpnam() はセキュアでない、など。
How can I determine the "caller" of my method in Objective-C? - Stack Overflow
メソッドの呼び出し元 を知る方法について。
Why does the value of only one of my text fields change? - Stack Overflow
IBOutlet 指定して IBで接続したアウトレットに setterメソッドを用意するとそのインスタンスが nil になってしまう問題(KVC 問題と呼ばれている?)。
以下問題のコードを転載。
これを IB でつないで実行すると。
@interface AXWindowController : NSWindowController { IBOutlet NSTextField *text; IBOutlet NSTextField *otherText; } - (void) setText: (NSString *)input; - (void) setOtherText; @end @implementation AXWindowController - (void) setText: (NSString *)input { [text setStringValue:input]; }
解決策は、set変数名を別名にする。
1. [controller showWindow:nil]; 2. [controller setText:@"lol"];
(gdb) p text $1 = (NSTextField *) 0x0
setText: を別名 setTextValue: にすると治った、とのこと。
NSOperation and NSNotificationCenter on the main thread - Stack Overflow
NSOperation での処理終了をメインスレッドで知るには?という話題。
performSelectorOnMainThread:withObject:waitUntilDone: を使う方法が紹介されていた。
Mac Dev Center: NSObject Class Reference - performSelectorOnMainThread:withObject:waitUntilDone:
例では、これを子スレッドで呼び出し、そこから呼ばれたメソッドで NSNotification による通知を行っている。
Mac OS X v10.6 だと Block が使えるとのこと。
Mac Dev Center: NSOperation Class Reference - setCompletionBlock:
関連して紹介されていた GCD の話題。
http://www.mikeash.com/?page=pyblog/friday-qa-2009-08-28-intro-to-grand-central-dispatch-part-i-basics-and-dispatch-queues.html
NSOperation and the Autorelease pool - Stack Overflow
NSOperation を作る時は専用の autorelease pool を作りましょう、という話題。
How do I find information on other applications running on the computer on Mac/Cocoa/Obj-C? - Stack Overflow
稼働中のアプリケーション情報を得る方法。
-[NSWorkspace activeApplication] を使うとアクティブなアプリケーションについての情報が得られる。
Mac Dev Center: NSWorkspace Class Reference - activeApplication
得られる情報は次の通り(key)。
@"NSApplicationPath"
@"NSApplicationName"
@"NSApplicationBundleIdentifier"
@"NSApplicationProcessIdentifier"
@"NSApplicationProcessSerialNumberHigh"
@"NSApplicationProcessSerialNumberHigh
Mac OS X v10.6 では NSRunningApplication という新しいクラスの使用を推奨している。
※以下リファレンスの転載
It is strongly suggested that you use theNSRunningApplication
methodscurrentApplication
oractive
to retrieve this information in post Mac OS X v10.6 targeted applications.
Mac Dev Center: NSRunningApplication Class Reference
自分のアプリケーションのみ扱えるようだ。以下、メソッド一覧を抜粋。
他アプリのウィンドウに関する情報を得る方法。NSRunningApplication には制限があるので使えない、Accessibility framework などが紹介されていた。
Get Ivar value from object in Objective-C - Stack Overflow
あるオブジェクトからインスタンス変数を取得する方法について。KVC を使う方法の他、object_getInstanceVariable( ) を使う方法が紹介されていた。