Home > iPhone SDK / Cocoa / Objective-C > NSUndoManagerをiPhoneOSで使いたい

NSUndoManagerをiPhoneOSで使いたい

詳解Objective-C2.0を見ると、アンドゥ機能を実現するためのクラスNSUndoManagerがFoundation Frameworkに存在すると書いてありました。ところが、XCode上でNSUndoManagerが補完されません。何か設定が必要なのでしょうか。

そこでドキュメントを調べてみるとiPhone OS Technology Overviewに次のような記述が有りました。

Undo management
The NSUndoManager class is not available, and there is no automatic support for undoing operations in iPhone OS.

残念なことに、iPhoneOSにはNSUndoManagerが存在しないようです。

では、iPhone OSでのundoの好ましい実装はどのようになるのかとさらにドキュメントを調べるとCocoa Fundamentals Guideの「What Is A Design Pattern?」に例としてあげられているCommandパターンの中でundo,redoに触れていることが分かりました。CommandパターンはMementoパターンと並んでUndo実装の定石ですので、問題になるのはCommandパターンの実装方法です。

同ドキュメントによると、Commandパターンやタイマー呼び出しなどの為にNSInvocationが用意されていると有ります。NSInvocationは事前にオブジェクト、メッセージ、引数を設定しておき後から実行(Invoke)するためのクラスです。詳しい使い方についてはoomori.com Cocoa Referenceが分かりやすく書かれていました。NSUndoManagerもこのNSInvocationを用いて実装されているようです。

関連する投稿

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://iphone-dev.ensites.net/archives/487/trackback
Listed below are links to weblogs that reference
NSUndoManagerをiPhoneOSで使いたい from iPhoneアプリ開発ブログ

Home > iPhone SDK / Cocoa / Objective-C > NSUndoManagerをiPhoneOSで使いたい

Search
Feeds
Meta

Return to page top