0

我创建了 NSString 的一个属性,并在该类的函数中对其进行了初始化。
现在我正在使用另一个函数 NSLog() 来显示这个字符串包含的内容。

我没有得到我输入的内容,而是得到了奇怪的字符串。
我的代码清单如下:

@property(nonatomic, retain) NSString *stringWithProperty;

现在正在实施中:

  - (IBAction)FirstButtonPressed:(id)sender
{   

NSString *x= [labelForSecondLine.text substringWithRange:NSMakeRange(0, 2)];
NSString *y= [labelForSecondLine.text substringWithRange:NSMakeRange(3, 2)];
NSString *z= [labelForSecondLine.text substringWithRange:NSMakeRange(5, 2)];

stringWithProperty=[NSString stringWithFormat:@"%@-%@-20%@",x,y,z];

}

- (IBAction)secondButtonPressed:(id)sender
{
NSLog(@"%@",stringWithProperty);
}

当我在第一次按下后按下第二个按钮时,我得到这个输出:

<UIButtonContent: 0x71533b0 Title = (null), AttributedTitle = (null), Image = (null), Background = (null), TitleColor = UIDeviceWhiteColorSpace 1 1, ShadowColor = UIDeviceWhiteColorSpace 0 0.5>

谁能告诉我我或这段代码出了什么问题?

4

2 回答 2

0

如果没有@synthesize stringWithProperty=stringWithProperty;for 属性,则底层变量名称将设置为_stringWithProperty. 您正在点击一些具有相同名称的对象(看起来像是一些按钮内容)。用于self.stringWithProperty访问属性或(如果您确实需要这样做)_stringWithProperty直接访问它的变量(或者甚至更好更明确self->_stringWithProperty

于 2013-07-29T15:04:16.673 回答
0

属性很奇怪,直到你习惯它们。(事实上​​,即使你习惯了它们,它们也很奇怪。)

使事情复杂化的是,Apple 一直在玩弄属性的工作方式。

如果您想相对独立于编译器版本,并避免各种奇怪的东西,请在您的语句@synthesize stringWithProperty;下方插入,并始终将属性称为. 在更高版本的编译器中,这些步骤是不必要的,但它们没有害处。@implementationself.stringWithProperty

于 2013-07-29T15:12:18.700 回答