我有一个协议和委托,我让它发送一个字符串然后更改UItabbar上的Tab,我的协议和委托工作只是找到它并在viewcontroller中设置一个字符串但是一旦视图完成加载它变为零 这是我的代码;
-(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
,但仍然无法保留字符串
答案 0 :(得分:1)
在显示的代码中,您实际上并未将dubString
作为NSLog
的参数,这是您正在使用的实际代码吗?如果是,那就是问题,请在, self.dubString
的结束)
之前添加NSLog
。如果没有,请检查dubString
属性是否设置为strong
或copy
(或者,如果它不是属性,则表示您的setDubString:
方法取得字符串的所有权或副本)。
编辑:显示的代码似乎没有任何问题,因此如果您无法跟踪错误,请发布更多代码(例如,设置dubString的所有上下文,例如作为你打电话的地方duplicateAsset
)。
与此同时,我建议您检查是否在调用duplicateAsset
的同一对象上调用viewDidLoad
(在两个调试打印输出中包含对象ID self
)。还要确保其他内容没有设置dubString
,例如,自己定义setDubString:
访问者并在那里添加调试打印输出(或断点)。