这是简单的代码:
// let's assume that I have to allocate this variable with alloc/init
NSString *someString = [[NSString alloc] initWithFormat:"%@", @"someString"];
NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{
[someClass someFunction: someString];
}];
[queue addOperation:op]
[someString release];
由于 someString 被释放,当 nsblockoperation 运行时,此代码将崩溃。防止这种情况的最佳做法是什么?
谢谢你。
编辑: ARC 不是一个选择,因为这不是我的决定。有什么办法可以在 MRC 中解决这个问题?
EDIT2:下面的代码呢?它会起作用吗?
// let's assume that I have to allocate this variable with alloc/init
NSString *someString = [[NSString alloc] initWithFormat:"%@", @"someString"];
[someString retain]
NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{
[someClass someFunction: someString];
[someString release]
}];
[queue addOperation:op]
[someString release];