-1

我正在实例化一个价格代码类,在其他各种类中。这一切都很好。现在,我尝试添加这样的属性:

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 的值。

4

3 回答 3

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];

那是违法的。你不能随便将视图控制器的视图添加到你的界面中。您必须使用正确的父子视图控制器关系(否则根本不使用视图控制器)。

于 2013-04-30T23:29:06.093 回答
0

您的问题是 totalSavingsTicker 是 PriceTicker 的新实例,而不是您在其中设置 valueString 值的实例。您需要获取对屏幕上设置该值的实例的引用。如果不知道您的控制器如何相互关联,我无法告诉您如何做到这一点。

于 2013-04-30T23:49:40.703 回答
0

好的,所以我正在回答我自己的问题:

尽管人们提出的建议和批评让艾米对下一个项目和一般的编码改进有所帮助(谢谢大家)。只需使用以下方法即可解决此问题:

self.valueString

而不是

_valueString or valueString
于 2013-05-01T18:13:30.837 回答