Objective c can';t将对象添加到NSMutableArray
我是一个RPN计算器的新手,我正在尝试设置一个由两个成员数组组成的数组来存储字符串/值对,以便以后可以使用它们来显示用户现在所在的位置所需的数字/运算符的完整序列。问题是,无论我犯了什么错误,都意味着数组无法填充。有没有关于如何解决这个问题的想法 下面是我的代码(Objective c can';t将对象添加到NSMutableArray,objective-c,xcode4.3,Objective C,Xcode4.3,我是一个RPN计算器的新手,我正在尝试设置一个由两个成员数组组成的数组来存储字符串/值对,以便以后可以使用它们来显示用户现在所在的位置所需的数字/运算符的完整序列。问题是,无论我犯了什么错误,都意味着数组无法填充。有没有关于如何解决这个问题的想法 下面是我的代码(oneStringValuePair和arrayOfStringValuePairs是在.h中声明为(非原子,强)并在.m中合成的NSmutableArray): 这是5 3+6/的NSLog: 2012-08-04 08:02:54.
oneStringValuePair
和arrayOfStringValuePairs
是在.h中声明为(非原子,强)
并在.m中合成的NSmutableArray):
这是5 3+6/
的NSLog:
2012-08-04 08:02:54.550 Calculator[83891:f803] result is float: 8.000000
2012-08-04 08:02:54.552 Calculator[83891:f803] String is ( 3+5 )
2012-08-04 08:02:54.552 Calculator[83891:f803] pair is nil.
2012-08-04 08:02:54.553 Calculator[83891:f803] array is nil.
2012-08-04 08:02:54.554 Calculator[83891:f803] first array element description: (null)
2012-08-04 08:02:54.555 Calculator[83891:f803] second array element description: (null)
2012-08-04 08:02:54.555 Calculator[83891:f803] pair count: (null)
2012-08-04 08:02:54.556 Calculator[83891:f803] count of pairs: (null)
2012-08-04 08:02:55.987 Calculator[83891:f803] result is float: 0.750000
2012-08-04 08:02:55.988 Calculator[83891:f803] String is ( 6/8 )
2012-08-04 08:02:55.989 Calculator[83891:f803] pair is nil.
2012-08-04 08:02:55.990 Calculator[83891:f803] array is nil.
2012-08-04 08:02:55.991 Calculator[83891:f803] first array element description: (null)
2012-08-04 08:02:55.992 Calculator[83891:f803] second array element description: (null)
2012-08-04 08:02:55.993 Calculator[83891:f803] pair count: (null)
2012-08-04 08:02:55.994 Calculator[83891:f803] count of pairs: (null)
您是否已按如下方式初始化NSMutableArray
NSMutableArray *pair = [NSMutableArray array];
代码中几乎没有问题
NSLog(@"result is float: %f",result);
self.formattedNumber = [NSString stringWithFormat:@"( %@%@%@ )",firstNumber,operation,secondNumber];
NSLog(@"String is %@",self.formattedNumber);
// ***** add
if (self.oneStringValuePair == nil)
{
self.oneStringValuePair = [NSMutableArray array];
}
if (self.arrayOfStringValuePairs == nil)
{
self.arrayOfStringValuePairs = [NSMutableArray array];
}
// *****
NSMutableArray *pair = self.oneStringValuePair;
NSMutableArray *array = self.arrayOfStringValuePairs;
//pair = [pair init]; // `init` is used to initialize object
//array = [array init]; // but not allocate object, if array is nil, [array init] will return nil
if (pair==nil)
{
NSLog(@"pair is nil.");
}
if (array==nil)
{
NSLog(@"array is nil.");
}
[pair addObject:self.formattedNumber];
NSLog(@"first array element description: %@", [[pair lastObject] description]);
[pair addObject:[NSNumber numberWithFloat:result]];
NSLog(@"second array element description: %@",[[pair lastObject] description]);
// the line below will crash if self.oneStringValuePair is not nil
//NSLog(@"pair count: %@",self.oneStringValuePair.count);
NSLog(@"pair count: %d",self.oneStringValuePair.count);
if (self.arrayOfStringValuePairs)
{
[array addObject:pair];
}
// the line below will crash if array is not nil
//NSLog(@"count of pairs: %@",array.count);
NSLog(@"count of pairs: %d",array);
这有什么用
NSMutableArray *pair = self.oneStringValuePair;
NSMutableArray *array = self.arrayOfStringValuePairs;
pair = [pair init];
array = [array init];
能否打印并检查self.onestringvaluepairs
&self.arrayOfStringValuePairs
是否为零。如果为nil,则按如下方式分配这两个对象
self.oneStringValuePair = [[[NSMutableArray alloc] init] autorelease]
也不需要打电话
pair = [pair init];
array = [array init];
试着把它去掉。每当您为其分配对象时,无需执行init(初始值设定项)。像以下NSLog一样打印数组计数(@“%ld”,[yourArray count]);如果没有
+alloc
,请不要使用-init
。Aravindhanavi,谢谢——这很有帮助。亚当,谢谢你的提醒。我现在看到了这样一幅画面:如果我再次使用-init
而不使用-alloc
,我的祖先的鬼魂每晚都会来折磨我……谢谢——我开始掌握属性,但分配/初始化它们仍然让我困惑。这很有帮助。非常感谢!这些都很有帮助。当涉及到属性时,分配/初始化仍然让我感到困惑。。。。
pair = [pair init];
array = [array init];