Stack Overflow より
プロセス間で Core Data を共有するには?
Is there a way of sharing a Core Data store between processes? - Stack Overflow
Managed Object はスレッドセーフではないと明記されているので、ましてやプロセス間の共有は大変そうだ。
SQLite のロックを使うアイディアなどが出ていた。
Mac Dev Center: Core Data Programming Guide: Multi-Threading with Core Data
変数名のネーミング規約
Member variable naming conventions in Cocoa - Stack Overflow
頭に my をつける、後ろに _ を付ける、引数の頭には a を付ける、setter/getter を考慮する、など。
暗号化アルゴリズム Blowfish をObjective-cで使いたい
Blowfish objective-c implementation - Stack Overflow
Cのライブラリがあるのでそれを使え、とのこと。
このあたりか。
Blowfish Source Code
NSApplicationWillTerminateNotification が受け取れない
NSApplicationWillTerminateNotification not received - Stack Overflow
・GCを使っていてオブザーバーが collected and finalized されているのでは?
・アプリがクラッシュしている、もしくは exit()を呼んでいるのでは?
・ユーザが強制終了した場合は受取はあてにできない
など
Snow Leopard(10.6) では 'sudden termnitaion' feature が追加されたとのこと。これは後日調べてみる。NSProcessInfo に Sudden Termination の説明がある。
Mac Dev Center: NSProcessInfo Class Reference
直前にアクティブだったアプリを知りたい
Cocoa: Return to previous active application? - Stack Overflow
NSWorkspaceDidDeactivateApplicationNotification が使えるとのこと。
Mac Dev Center: NSWorkspace Class Reference
Snow Leopard(10.6)から追加された通知のようだ。
他にも下記が追加されている。
NSWorkspaceActiveSpaceDidChangeNotification
NSWorkspaceDidChangeFileLabelsNotification
NSWorkspaceDidHideApplicationNotification
NSWorkspaceDidUnhideApplicationNotification
NSWorkspaceDidActivateApplicationNotification
NSWorkspaceDidRenameVolumeNotification
NSWorkspaceScreensDidSleepNotification
NSWorkspaceScreensDidWakeNotification
Spaces 変更 やスリープに入った時の通知も受け取れるようになったのか。
Core Data での Enums の使い方
Best way to implement Enums with Core Data - Stack Overflow
目的のプロパティをオーバーライドするのではなく、別名で getter/setterを定義し、KVO向けに +keyPathsForValuesAffecting<Key> を実装し連携させる。面白い。
以下、ソースコードの引用。
typedef enum { kPaymentFrequencyOneOff = 0, kPaymentFrequencyYearly = 1, kPaymentFrequencyMonthly = 2, kPaymentFrequencyWeekly = 3 } PaymentFrequency;
-(PaymentFrequency)itemTypeRaw { return (PaymentFrequency)[[self itemType] intValue]; } -(void)setItemTypeRaw:(PaymentFrequency)type { [self setItemType:[NSNumber numberWithInt:type]]; }
+keyPathsForValuesAffecting<Key> は監視用途で使える。
+(NSSet *)keyPathsForValuesAffectingItemTypeRaw { return [NSSet setWithObject:@"itemType"]; }
Mac Dev Center: NSKeyValueObserving Protocol Reference