我有一个协议和委托,我让它发送一个字符串,然后更改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)
我不确定发生了什么,因为我已经做过很多次了。
编辑:
我更新了日志中的内容。我已将字符串属性设置为
copy
和strong
,但仍然无法获取字符串 最佳答案
在显示的代码中,您实际上并未将dubString
用作NSLog
的参数,这是您正在使用的实际代码吗?如果是,那就是问题所在,在, self.dubString
的结束)
之前添加NSLog
。如果不是,则检查dubString
属性是否设置为strong
或copy
(或者,如果不是属性,则说明setDubString:
方法具有字符串或其副本的所有权)。
edit :显示的代码似乎没有什么问题,因此,如果您无法跟踪该错误,请发布更多代码(例如,设置了dubString的所有上下文,例如调用duplicateAsset
的位置)。
同时,我建议您检查是否在调用了duplicateAsset
的同一对象上调用viewDidLoad
(在两个调试打印输出中都包括self
的对象ID)。还请确保没有其他设置之间的dubString
,例如,自己定义setDubString:
访问器并在其中添加调试打印输出(或断点)。