NSValue在释放时是否释放其价值?

Geo*_*sen 1 pointers memory-management objective-c nsvalue

看看这个伪代码:

void* magicpointer = malloc(OVER_NINE_THOUSAND);
NSValue* v = [NSValue valueWithPointer:magicpointer];
[v release];
Run Code Online (Sandbox Code Playgroud)

当v被释放时,magicpointer也会被释放,或者我必须手动执行吗?我正在使用手动引用计数.

Sve*_*ven 5

它不会被释放 - NSValue只是一个包装器,因此您可以将任意值视为对象.它对包装指针没有任何作用.


Vin*_*ble 5

不,NSValue不会.

听起来你可能想要使用NSData它,它可以释放它的指针:

    void* magicpointer = malloc(OVER_NINE_THOUSAND);
    NSData *d = [NSData dataWithBytesNoCopy:magicpointer
                                     length:OVER_NINE_THOUSAND
                               freeWhenDone:YES];
    //d is autoreleased, so no need to -release it.