내 아이폰 앱에 NSNumber의 여러 멤버가있는 관리 객체를 만들었습니다. 나는이 값들을 초기화한다. 또한 하위 오브젝트 멤버를 만듭니다. 그런 다음, 실행 취소 관리자를 작성하여 초기화 된 매개 변수에 영향을주는 실행 취소없이 하위 오브젝트에 실행 취소 조작을 수행 할 수 있습니다. 그러나 내 앱을 시작하고 전화를 걸 때 ...왜 NSUndoManager canUndo예요?
[undoManager canUndo];
... "예"입니다. 어떻게 이럴 수있어? 최상위 데이터 멤버는 0으로 다시 설정됩니다. 그뿐 아니라 sub-objet의 managedObjectContext는 nil입니다. 실행 취소 관리자 작성 이전에 하위 오브젝트가 작성 될 때 어떻게 될 수 있습니까? 실행 취소 관리자는 역 활동입니까? 실행 취소 관리자를 만들기 전에 이러한 데이터 멤버가 설정 되더라도 전체 관리 대상 개체의 실행 취소를 허용하는 것으로 보입니다.
모든 의견에 감사드립니다.
NSManagedObjectContext는 자체 실행 취소 관리자를 만듭니다. disableUndoRegistration 및 enableUndoRegistration을 사용하여 특정 작업을 실행 취소하지 못하게하십시오. – ughoavgfhw
@ughoavgfhw : iOS 플랫폼에서는 사실이 아닙니다! – Felix
iPhone 용 CoreDataBooks 예제를 따랐습니다. CanUndo는 실행 취소 관리자를 만든 후 NO를 반환하고 viewWillAppear 메서드에서 NO를 반환합니다 (객체에 영향을주는 다른 코드를 주석 처리했습니다). 그러나 실행 취소 버튼을 탭하면 '예'가 반환됩니다. 어떻게 이럴 수있어? – Christopher