[cocoa][swift]NSUndoManagerNSUndoManagerの利用は、Swiftで楽になったと思うが、その仕組みが見えにくくなったと思うので、Objective-Cの場合から説明する。CocoaのUndoとRedoは、NSInvocationというクラスでNSObjectの子クラスとメソッドを保持し、それをNSUndoManager内のスタックで管理することで実現している。なんらかの操作を行うと、Undoに必要なNSInvocationのインスタンスがUndoスタックに積まれていく。ユーザがUndoを行うと、Redoに必要なNSInvocationのインスタンスがRedoスタックに積まれていく。Objective-Cのコードで、以下のようになる。makeItHotter];}makeItHotterで温度を10度上げて、makeItColderをNSUndoManagerに積む。makeItColderでは、温度を10度下げて、makeItHotterをNSUndoManagerに積む。これをSwiftを書く場合、積むメソッドのselectorを用意するのが面倒になるのだが、selectorを必要としないメソッドが用意されていた。ソースコードGitHubからどうぞ。reserved.このページではJavaScriptを使用しています。1.8.7-p374。