@@ -417,6 +417,106 @@ - (NSUInteger)countOfNonNilValues {
417
417
return count ;
418
418
}
419
419
420
+ #if 0
421
+ #warning Testing snapshot events
422
+
423
+ + (NSCountedSet*)awakenedObjects {
424
+ NSCountedSet* awakenedObjects = ssyDebugGlobalObject ;
425
+ if (!awakenedObjects) {
426
+ awakenedObjects = [[NSCountedSet alloc] init] ;
427
+ ssyDebugGlobalObject = awakenedObjects ;
428
+ NSLog(@"awakenedObjects = %p", awakenedObjects) ;
429
+ }
430
+
431
+ return awakenedObjects ;
432
+ }
433
+
434
+ - (void)addAwakenedObject:(SSYManagedObject*)object {
435
+ [[[self class] awakenedObjects] addObject:object] ;
436
+ }
437
+
438
+ - (void)removeAwakenedObject:(SSYManagedObject*)object {
439
+ [[[self class] awakenedObjects] removeObject:object] ;
440
+ }
441
+
442
+ + (void)logAwakenedObjects {
443
+ NSCountedSet* awakenedObjects = [self awakenedObjects] ;
444
+ for (id object in awakenedObjects) {
445
+ printf("cnt=%02ld flt=%hhd del=%hhd rc=%ld %p %s\n",
446
+ (long)[awakenedObjects countForObject:object],
447
+ [object isFault],
448
+ [object isDeleted],
449
+ [object retainCount],
450
+ object,
451
+ [[object className] UTF8String]) ;
452
+ }
453
+ }
454
+
455
+ - (void)awakeFromInsert {
456
+ [self addAwakenedObject:self] ;
457
+ [super awakeFromInsert] ;
458
+ }
459
+
460
+ - (void)awakeFromFetch {
461
+ [self addAwakenedObject:self] ;
462
+ [super awakeFromFetch];
463
+ }
464
+
465
+ - (void)willTurnIntoFault {
466
+ [self removeAwakenedObject:self] ;
467
+ [super willTurnIntoFault];
468
+ }
469
+
470
+ - (NSString*)eventDescriptionForFlags:(NSSnapshotEventType)flags {
471
+ NSMutableString* eventsString = [[NSMutableString alloc] init] ;
472
+ if ((flags & NSSnapshotEventUndoInsertion) != 0) {
473
+ [eventsString appendString:@"+UndoInsert"] ;
474
+ }
475
+ if ((flags & NSSnapshotEventUndoDeletion) != 0) {
476
+ [eventsString appendString:@"+UndoDelete"] ;
477
+ }
478
+ if ((flags & NSSnapshotEventUndoUpdate) != 0) {
479
+ [eventsString appendString:@"+UndoUpdate"] ;
480
+ }
481
+ if ((flags & NSSnapshotEventRollback) != 0) {
482
+ [eventsString appendString:@"+Rollback"] ;
483
+ }
484
+ if ((flags & NSSnapshotEventRefresh) != 0) {
485
+ [eventsString appendString:@"+Refresh"] ;
486
+ }
487
+ if ((flags & NSSnapshotEventMergePolicy) != 0) {
488
+ [eventsString appendString:@"+MergePolicy"] ;
489
+ }
490
+
491
+ NSEntityDescription* entityDescription = [[self class] entityDescription] ;
492
+ NSArray* attributeKeys = [[entityDescription attributesByName] allKeys] ;
493
+
494
+ NSInteger nonNils = 0 ;
495
+ for (NSString* key in attributeKeys) {
496
+ if ([self valueForKeyPath:key]) {
497
+ nonNils++ ;
498
+ }
499
+ }
500
+
501
+ NSString* answer = [[NSString alloc] initWithFormat:
502
+ @"%@ %ld/%ld values/keys %@",
503
+ [self className],
504
+ (long)nonNils,
505
+ (long)[attributeKeys count],
506
+ eventsString] ;
507
+ [eventsString release] ;
508
+
509
+ return [answer autorelease] ;
510
+ }
511
+
512
+ - (void)awakeFromSnapshotEvents:(NSSnapshotEventType)flags {
513
+ NSLog(@"awakeSshot %p %@ %@", self, [self className], [self eventDescriptionForFlags:flags]) ;
514
+ [super awakeFromSnapshotEvents:flags ] ;
515
+ }
516
+
517
+ #endif
518
+
519
+
420
520
#if 0
421
521
#warning Overrode SSYManagedObject -dealloc and -didTurnIntoFault for debug logging
422
522
- (void)dealloc {
0 commit comments