【问题标题】:Objective-C Changing values of instance variables in methodObjective-C 在方法中更改实例变量的值
【发布时间】:2012-11-12 17:28:22
【问题描述】:

我正在 XCode 4.4 上编写一个 Objective-C 代码。 我有一个 NSMutableArray 作为我的类 k_info 的实例变量 我也以 oneplaces 的名称定义和合成(非原子,保留)属性。 我无法在 NSMutableArray 个位中添加 NSMUtableString 对象。 当我尝试添加它时。onesplaces 的大小保持为 0,并且零索引处的对象显然保持为空。 我尝试使用和不使用“self”关键字来执行此操作,但在任何一种情况下都不起作用。 我添加对象并打印它的语法是正确的,因为当我创建一个新的 NSMutableArray 测试时 并尝试做同样适用的事情,但不适用于实例变量 oneplaces。 如果不解决此问题,我将无法继续我的项目。请告诉我为什么会这样 发生了,我应该如何解决这个问题。

-(void)createinfo:(NSMutableArray )al varsis:(int)vars { NSMutableString stes=[[NSMutableString alloc]init]; stes=(NSMutableString*)@"string0";

  [ onesplaces addObject:stes];
  NSLog(@"%u",[onesplaces count]);
  NSLog(@"value is: %@ ",[ onesplaces objectAtIndex:0]);

  [ self.onesplaces addObject:stes];
   NSLog(@"%u",[onesplaces count]);
   NSLog(@"value is: %@ ",[self.onesplaces objectAtIndex:0]);

  NSMutableArray* test=[[NSMutableArray alloc]init];
  [ test addObject:stes];
   NSLog(@"%u",[test count]);
  NSLog(@"value is: %@ ",[test objectAtIndex:0]);

}

【问题讨论】:

  • 有时我们可能忘记在添加之前初始化数组。检查是否是问题所在。

标签: objective-c xcode4


【解决方案1】:

您可能忘记创建数组了。在您的代码中的某处,可能在您的 init 方法中,您需要在使用它之前创建数组。

self.onesplaces = [[NSMutableArray alloc] init];

你得到nil而不是错误消息,因为Objective-C允许你向nil发送消息,它总是返回nil。

【讨论】:

  • 是的,这就是问题所在。我还没有初始化 NSMutableArray。现在在创建它之后。代码正在运行。非常感谢
  • @ImrozeAslam 很高兴我能提供帮助,欢迎来到 StackOverflow。这里习惯于“接受”解决您问题的答案,这将使您和回答者在网站上获得更好的声誉。
猜你喜欢
  • 2011-09-24
  • 1970-01-01
  • 2010-10-07
  • 2013-02-02
  • 2023-04-04
  • 1970-01-01
  • 2011-08-06
  • 2013-03-01
  • 2012-07-08
相关资源
最近更新 更多