У меня есть небольшое приложение COCOA Mac OS для игры с основными данными.Я переопределил функцию сохранения по умолчанию, чтобы выполнить дополнительную работу после сохранения документа (автоматически сохраняйте также и zip-копию).
Каждый раз, когда я сохраняю - программа вылетает с EXC_BAD_ACCESS в строке, где я вызываю [super writeToURL ...].Хорошая часть - документ сохраняется правильно.Вот код:
- (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation originalContentsURL:(NSURL *)absoluteOriginalContentsURL error:(NSError **)error{
NSLog(@"Overriding SAVE operation");
// Crash everytime with objc_msSend or EXC_BAD_ACCESS (but saves properly):
BOOL res = [super writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation originalContentsURL:(NSURL *)absoluteOriginalContentsURL error:(NSError **)error];
if(res){ // zip and save zipped copy...}..
}
Каждый раз, когда я получаю аналогичную, но не идентичную трассировку стека, говоря о не распознавании селектора или проблеме с удалением чего-либо из persistentStoreCoordinator.
Мой координатор настраивается простым способом:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
Кто-нибудь знает, что может случиться?Я долго не мог отследить его ...
Трассировка стека отладчика:
#0 0x9141f4e6 in objc_exception_throw
#1 0x951288e8 in +[NSException raise:format:arguments:]
#2 0x9512885a in +[NSException raise:format:]
#3 0x956837dc in -[_NSManagedProxy _entity]
#4 0x9568392a in -[_NSManagedProxy fetchRequestWithSortDescriptors:limit:]
#5 0x95961f4a in -[_NSManagedProxy _storesDidChange:]
#6 0x95f801c3 in _nsnote_callback
#7 0x950b03c3 in __CFXNotificationPost
#8 0x950afdca in _CFXNotificationPostNotification
#9 0x95f75090 in -[NSNotificationCenter postNotificationName:object:userInfo:]
#10 0x906da1dc in -[NSPersistentStoreCoordinator(_NSInternalMethods) _postStoresChangedNotificationsForStores:changeKey:options:]
#11 0x906cbd52 in -[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:]
#12 0x9597f2e7 in -[NSPersistentDocument configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:]
#13 0x00002a35 in -[MyDocument configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:] at MyDocument.m:79
#14 0x95c3536f in -[NSPersistentDocument(NSDeprecatedInternal) _configurePersistentStoreCoordinatorForURL:ofType:error:]
#15 0x9597f585 in -[NSPersistentDocument writeToURL:ofType:forSaveOperation:originalContentsURL:error:]
#16 0x00002ab9 in -[MyDocument writeToURL:ofType:forSaveOperation:originalContentsURL:error:] at MyDocument.m:90
#18 0x95822a4a in -[NSDocument writeSafelyToURL:ofType:forSaveOperation:error:]
спасибо