Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 目标C中NSInteger到NSString的错误访问异常错误?_Ios_Objective C_Nsstring_Nsinteger - Fatal编程技术网

Ios 目标C中NSInteger到NSString的错误访问异常错误?

Ios 目标C中NSInteger到NSString的错误访问异常错误?,ios,objective-c,nsstring,nsinteger,Ios,Objective C,Nsstring,Nsinteger,我想用Objective-C做一个计算器。我有四个变量。它们在头文件中声明,如以下代码段所示: #import <UIKit/UIKit.h> @interface CalculatorAppViewController : UIViewController <UITextFieldDelegate> { NSInteger intanswer, intoperand; NSString *answer, *operand, *currOP;

我想用Objective-C做一个计算器。我有四个变量。它们在头文件中声明,如以下代码段所示:

   #import <UIKit/UIKit.h>

   @interface CalculatorAppViewController : UIViewController <UITextFieldDelegate> {
   NSInteger intanswer, intoperand;
   NSString *answer, *operand, *currOP;
   }


   @property (nonatomic, assign) NSInteger intoperand;
   @property (nonatomic, assign) NSInteger intanswer;
   @property (nonatomic, assign) NSString *answer;
   @property (nonatomic, assign) NSString *operand;
   @property (nonatomic, assign) NSString *currOP;

   //these are not all my variables, just the ones in question
我有一个名为resultBar的UILabel,它显示应答字符串变量。我试图做的是根据他或她按下的键收集用户输入,并将它们存储到字符串变量中(原因是如果他们按1两次,应该会创建11)。然后,我希望获取应答和操作数变量中的字符串,将它们转换为整数,进行算术运算,将解决方案作为字符串存储到应答变量中,并显示UILabel resultBar上现在保存的应答

我的主要问题是,我似乎无法将NSString answer变量转换为NSInteger intanswer。这是一段代码:

  intanswer = [answer integerValue]; //error line, this is where the error code is
  intoperand = [operand integerValue];

  intanswer = intanswer + intoperand; 

  answer = [NSString stringWithFormat: @"%d", (NSInteger)intanswer];
  resultBar.text = answer;
我得到Thead 1:EXC\u BAD\u访问(代码=1,地址=0x408c5e2f)异常,我不知道为什么


任何帮助都很重要。如果我能提供更多信息,请告诉我!非常感谢:)

通常您希望属性对象中的
NSString
使用
strong
copy
answer
操作数
currOP
,这样它们就不会过早地被释放

您需要仔细阅读对象生命周期以及
assign
、strong
copy`的正确用法

在这种情况下,
answer
看起来不再保留,指针现在指向导致崩溃的垃圾。将
NSString
属性上的“分配”更改为“复制”


您仍然需要
NSLog(@“answer:%@”,answer)
并且它需要有一个值。

错误的确切含义是什么?你确定它不是其他类吗?[NSNull]还是smth?在那个里放一个断点,在控制台中放一个“po[answer class]”,看看它是什么类。也许是UITextField——很难说没有看到整个项目;不要“阅读”你的输出。你的计算器应该在内部以数字的形式记录所有这些信息,然后格式化输出结果。为什么要在错误后显示代码而不是错误前显示代码。例如如何声明
intanswer
,以及
answer
NSLog()
。很抱歉,我对问题的描述不清楚。关于我的项目,我已经提供了一些更清晰的信息@ZaphSo是否有任何分配给
答案
  intanswer = [answer integerValue]; //error line, this is where the error code is
  intoperand = [operand integerValue];

  intanswer = intanswer + intoperand; 

  answer = [NSString stringWithFormat: @"%d", (NSInteger)intanswer];
  resultBar.text = answer;