Are all weak references nilled if we enable zombie object?

后端 未结 1 713
难免孤独
难免孤独 2021-01-16 04:51

Normally, if an object deallocated, all weak references will be nilled.

What about if we enable zombie object?

Product -> Edit Scheme -> Enable Zombie Object

相关标签:
1条回答
  • 2021-01-16 05:28

    The weak reference will be set to nil even if you enable Zombie Objects.

    I tested it like this:

    id __weak o;
    @autoreleasepool {
        id ob = [[NSObject alloc] init];
        o = ob;
        NSLog(@"Weak ref before release %@", o);
    }
    NSLog(@"Weak ref after release %@", o);
    

    With Zombies enabled or not, the same output happens:

    2013-12-05 23:55:35.571 WeakPointers[93840:303] Weak ref before release  
    2013-12-05 23:55:35.572 WeakPointers[93840:303] Weak ref after release (null)
    
    0 讨论(0)
提交回复
热议问题