2017-05-15 15 views
5

Anladığım kadarıyla, UIDocument sınıfı, kaydedilmemiş değişiklikleri bir dosyada izleyebilir ve hatta dosyayı kilitler, böylece birden fazla kişi tarafından kontrol edilemez. Ancak kullanıcı gücü uygulamayı kaydetmeden veya uygulama çökermeden çıkarsa ne olur? Kaydedilmemiş değişiklikleri bir UIDocument'a geri yüklemek için nasıl giderim? Böylece uygulama yeniden başlatıldığında, en son kaydedilmemiş değişikliklerle UIDocument yeniden açar? Değiştirilmeden önce her dosyanın kopyalarını çoğaltmalı mıyım ve kullanıcı değişiklikleri kaydedinceye kadar geçici kopyası mı değiştirmeliyim? Yoksa Apple daha basit bir uygulama sağlıyor mu? Ayrıca, Data dosya içeriğini ve her UIDocument örneğinin undoManager kodlamasını ve bir önbellek olarak düzenli olarak saklanmasını da düşündüm. Işe yarar mı?UIDocument Uygulamanın Kilitlenmemiş Değişikliklerini Kurtar Uygulama Çökmesi/Zorla Çık

cevap

1

UIDocument ve UIManagedDocument (örneğin diğer sistem kısıtlarını saygı göstererek diske değişiklikleri izleme (belge değişti eğer doğruysa dönebilirsiniz bir işlevi çağırarak) ve kaydetme automagic değişiklik yapın: Başka bir işlem okumaya çalışıyor ise dosya). Temel sınıf yöntemlerini geçersiz kılmazsanız, Apple'ın kaydetme şekli çok güvenlidir. Kaydetme işlemi tetiklendiğinde, Apple bir geçici dosyaya kaydeder ve kaydetme başarılı bir şekilde yeniden adlandırılırsa ve orijinal dosyanın silinmesi yapılırsa (IIRC yeniden adlandır/sil atomiktir veya atomik olarak). Tüm işlemlerin% 99,99'u için kaydetme işleminin dosya sisteminde bozuk bir dosya bırakmadığını varsayabilirsiniz.

Apple, belirli noktalarda arka planda işlemleri tetikler (örneğin: zamana dayalı, uygulama arka plana geçtiğinde, diğer işlem dosyaya erişmeye çalışmadan önce, ...), ancak ne olacağını açık bir şekilde bulamadım Uygulama zorladığında.

Bu, mantık ve sağduyu, bir uygulamadan çıkmaya zorlarsanız, geçerli belge durumu 'un öğesinin kaydedilemeyeceğini söyler. Zorla çıkmak için manuel olarak "hızlı kaydetme" uygulanması bile teknik olarak mümkün olmayabilir. Periyodik bir arkaplan kaydetme işlemi (zaten UIDocument gibi) en iyi strateji olabilir.

Geri alma yöneticisinin durumunu kaydetme hakkında: Bu, UIDocument'ın kaydedilmesiyle aynı teknik sorun olacaktır. Uygulamanın zorla çıkmak üzere olduğunu söyleyen herhangi bir olay veya başka bir şey yoktur.

Apple Documentation'u okumanız gerekir. Çok uzun ama süreci daha detaylı açıklıyor. Apple'ın empoze ettiği stratejiyi uygulamak için tavsiyem olurdu. Bu stratejiler sağlamdır ve Apple ekosistemindeki ve kullanıcıları için birçok uygulama için çalışır. Bunun da ötesinde, daha düşük bir uygulama maliyetine ve otomatik iyileştirme işlemlerine (Apple uygulamalarını güncellediklerinde) sahip olursunuz.

+0

Tavsiyelerinizi bir kenara ayırın - Kullanıcının, kaydedilmeyi tercih edene kadar kaydedilmemiş değişikliklere sahip olmasına izin verirken, kaydedilmemiş değişiklikleri de kurtarırken, bilgisayarın kapanması durumunda Word'ün yaptığı gibi, nasıl bir belgede değişiklik yapmasına izin verirdim? –

İlgili konular