我的 iPhone 应用程序是Tab based
. 在一个选项卡中,假设Security Tab
我有三个视图控制器First, Second, Third
。我正在将字符串值Third
从视图控制器传递给Second
视图控制器。selectedAlertDesc 是我的Third
视图控制器的 NSString 对象。
在Third
视图控制器中:
@property (nonatomic,retain) NSString *selectedAlertDesc;
@synthesize selectedAlertDesc = _selectedAlertDesc;
在Second
视图控制器中:
Third *controller = [[Third alloc] init];
[controller setSelectedAlertDesc:[[alertArray objectAtIndex:indexPath.row] objectForKey:@"alertDesc"]];
[self.navigationController pushViewController:controller animated:YES];
[controller release];
它工作正常,直到我更改选项卡。如果我将安全选项卡留在Third
视图控制器页面并在访问其他选项卡后返回,它会崩溃。它指出, selectedAlertDesc 变成了僵尸。
-[CFString stringByReplacingOccurrencesOfString:withString:]: message sent to deallocated instance 0xeb3d760
我该如何解决这个问题?我相信我们不应该初始化合成对象。我在这里忘记了什么吗?
编辑:
正如建议的那样,我使用工具来检查分配/保留历史。我得到了以下内容: - 所以在使用之后selectedAlertDesc
,我保留了它。这是正确的做法吗??它工作正常!
_selectedAlertDesc = [_selectedAlertDesc stringByReplacingOccurrencesOfString:@"opentag" withString:@"<"];
_selectedAlertDesc = [_selectedAlertDesc stringByReplacingOccurrencesOfString:@"closetag" withString:@">"];
[txtTxtVw setText:_selectedAlertDesc];