在Objective C中,如何显式释放另一个对象拥有的对象?或者也许等效地通知拥有对象它不再拥有子对象。考虑以下:
- (void) testWithNSString:(NSString *)val
{
NSData *data = [val dataUsingEncoding:NSASCIIStringEncoding];
// ...
// now I want to explicitly release data e.g. due to low memory
}
[val dataUsingEncoding:NSASCIIStringEncoding]
返回一个对象,并且NSData
我假设(由于所有权的一般约定)它将在何时val
释放。从不泄漏的角度来看,这似乎是可以接受的。但这种策略提出了两个问题:
- 如果我想
data
立即显式释放对象,例如由于内存不足怎么办? - 如果我不希望调用者
testWithNSString
留下一个突然拥有新对象所有权的NSString val
对象(在返回之后)怎么办?testWithNSString