【问题标题】:Error in property of NSString Object when using in different method of same class?在同一类的不同方法中使用时 NSString 对象的属性错误?
【发布时间】:2013-07-29 14:18:57
【问题描述】:

我创建了 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>

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

【问题讨论】:

  • 尝试使用self.stringWithProperty
  • 向我们展示相应的@synthesize 声明,如果你有的话。
  • 是的,当然.. 我确实合成了那个属性.. @synthesize stringWithProperty
  • 您是否尝试过使用self.stringWithProperty? (特别是在您将值分配给属性的情况下。)

标签: ios objective-c nsstring


【解决方案1】:

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

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

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

【讨论】:

  • 是的,当然.. 我确实合成了那个属性.. @synthesize stringWithProperty
【解决方案2】:

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

【讨论】:

  • 请勿使用_stringWithPropertyself -&gt;_stringWithProperty 为属性赋值!!!
  • 我同意(除非您使用自定义 getter/setter)
  • 是的,当然.. 我确实合成了那个属性.. @synthesize stringWithProperty
  • 合成与否,请始终与self 一起使用,以避免意外碰到不想要的东西时出现这种情况。
  • 如果不需要的话,强烈建议不要直接访问底层变量,使用属性作为属性;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2020-11-17
  • 2021-10-17
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多