我在各种其他类中实例化价格代码类。这一切都很顺利。现在,我试图像这样添加一个属性:
PriceTicker.h
@interface PriceTicker : UIViewController {
NSString *_valueString;
}
@property (nonatomic, strong) NSString *valueString;
并将其合成为:
PriceTicker.m
@synthesize valueString = _valueString;_
然后在下面的各种方法中设置该值,是的,该值确实设置为由控制台输出等验证。
但是,当我在另一个类中实例化PriceTicker时,例如:
totalSavingsTicker = [[PriceTicker alloc] initWithNibName:@"CascadiaTicker" bundle:nil];
然后尝试将其值设置为局部变量,如下所示:
NSString *savings = [[NSString alloc]init];
savings = totalSavingsTicker.valueString;
储蓄的价值不会设置为我从上面的日志中看到的valueString的值。
答案 0 :(得分:0)
好的,这不能解答你的问题,但这让我疯了,所以请不要说:
NSString *savings = [[NSString alloc]init];
savings = totalSavingsTicker.valueString;
所有这一切都是使两个字符串,其中第一个字符串立即被丢弃,这是浪费和毫无意义的。这样说:
NSString *savings;
savings = totalSavingsTicker.valueString;
甚至更好,这个:
NSString *savings = totalSavingsTicker.valueString;
编辑:既然您已经更好地描述了您的问题,那么您将从调试器报告此消息:“无法打印NIL对象的描述”
这听起来对我来说是正确的。除非你主动做某事,否则所有对象属性都会设置为nil。所以当你说:
totalSavingsTicker = [[PriceTicker alloc] initWithNibName:@"CascadiaTicker" bundle:nil];
NSString *savings = totalSavingsTicker.valueString;
我希望期待 savings
在那一刻是零,因为我希望那时valueString
属性为零。您需要使用此视图控制器启动工作,将其视图添加到界面中等。
您后续评论的另一个问题是:
[self.savingsView addSubview:totalSavingsTicker.view];
这是非法的。您不能只是鲁莽地将视图控制器的视图添加到您的界面。您必须使用正确的父子视图控制器关系(否则根本不使用视图控制器)。
答案 1 :(得分:0)
您的问题是totalSavingsTicker是PriceTicker的新实例,而不是您设置valueString值的实例。您需要获取对屏幕上设置该值的实例的引用。在不知道控制器如何相互关联的情况下,我不能告诉你如何做到这一点。
答案 2 :(得分:0)
好的,我正在回答我自己的问题:
尽管人们提出的建议和批评对下一个项目和一般编码改进有帮助(谢谢你们)。通过简单地使用:
解决了这个问题self.valueString
而不是
_valueString or valueString