我有一个协议和委托,我让它发送一个字符串,然后更改UItabbar上的Tab,我的协议和委托可以找到,并在viewcontroller中设置了一个字符串,但是一旦视图加载完成,它就变成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,但仍然无法获取字符串

最佳答案

在显示的代码中,您实际上并未将dubString用作NSLog的参数,这是您正在使用的实际代码吗?如果是,那就是问题所在,在, self.dubString的结束)之前添加NSLog。如果不是,则检查dubString属性是否设置为strongcopy(或者,如果不是属性,则说明setDubString:方法具有字符串或其副本的所有权)。

edit :显示的代码似乎没有什么问题,因此,如果您无法跟踪该错误,请发布更多代码(例如,设置了dubString的所有上下文,例如调用duplicateAsset的位置)。

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

10-04 17:42