1

我有一个协议和委托,我让它发送一个字符串然后更改 UItabbar 上的选项卡,我的协议和委托工作只是找到并在视图控制器中设置一个字符串但是一旦视图完成加载它就变成 nil 这是我的代码;

-(void)duplicateAsset:(NSString *)serialNumber{

    [self setDubString:serialNumber];
    NSLog(@"delegate called DubString = %@",self.dubString);

}
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"_dubString in viewDidLoad = %@",self.dubString);
}

输出

 delegate called DubString = SERIALNUMBER
 _dubString in viewDidLoad = (null)

我不确定发生了什么,因为我以前做过很多次。

编辑:我更新了日志的内容。我已将字符串属性设置为copystrong,但我仍然无法让字符串保持不变

4

1 回答 1

1

在显示的代码中,您实际上并未将dubString其作为参数NSLog,这是您正在使用的实际代码吗?如果是,那就是问题所在,请, self.dubString在. 如果不是,则检查该属性是否设置为or (或者,如果它不是一个属性,则您的方法是否拥有该字符串或其副本的所有权)。)NSLogdubStringstrongcopysetDubString:

编辑:显示的代码似乎没有任何问题,因此如果您无法跟踪错误,请发布更多代码(例如,设置 dubString 的所有上下文,例如您正在调用的地方duplicateAsset)。

同时,我建议检查您是否正在调用duplicateAsset同一个对象viewDidLoad(包括self两个调试打印输出中的对象 ID)。还要确保dubString中间没有其他设置,例如,setDubString:自己定义访问器并在那里添加调试打印输出(或断点)。

于 2012-11-09T17:21:39.407 回答