// Kill ring calls. Would be better to use NSKillRing.h, but that's not available in SPI. void _NSInitializeKillRing(void); void _NSAppendToKillRing(NSString *); void _NSPrependToKillRing(NSString *); NSString *_NSYankFromKillRing(void); NSString *_NSYankPreviousFromKillRing(void); void _NSNewKillRingSequence(void); void _NSSetKillRingToYankedState(void); void _NSResetKillRingOperationFlag(void);
という宣言を発見。Cocoaアプリのキルリングの中身は アップルとしては非公開(非公式?) の関数でできてるっぽいですね。
ということで不慣れなObjective-Cで
/* ヘッダとかは略 */ @implementation NSTextView(inspectKillRing) void _NSInitializeKillRing(void); void _NSAppendToKillRing(NSString *); void _NSPrependToKillRing(NSString *); NSString *_NSYankFromKillRing(void); NSString *_NSYankPreviousFromKillRing(void); void _NSNewKillRingSequence(void); void _NSSetKillRingToYankedState(void); void _NSResetKillRingOperationFlag(void); - (IBAction)inspectKillRing:(id)sender { NSLog(@"_NSYankFromKillRing() --> %@" , _NSYankFromKillRing()); NSLog(@"_NSYankPreviousFromKillRing() --> %@" , _NSYankPreviousFromKillRing()); } @end
とりあえずこんな風に書いてXcodeでビルドしたら ログでキルリングの中身を見れました :)