- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 iPhone 应用程序世界的新手。所以我想我用计算器应用程序试试运气。不幸的是,我遇到了一个问题,如果我按计算器中的第三个键,应用程序就会崩溃。有时我会收到此错误 EXC_BAD_ACCESS。这是我的 CalculatorViewController.m 文件中的代码。
#import "CalculatorViewController.h"
@implementation CalculatorViewController
@synthesize screenText;
- (IBAction)buttonPressed:(id)sender {
NSString *title = [sender titleForState:UIControlStateNormal];
[self collect:title];
}
- (void)collect:(NSString *)digitz {
NSString * newText = nil;
if ([digitz isEqualToString:@"+"]) {
[self add:result];
big_digit = nil;
}
else if ([digitz isEqualToString:@"+"]) {
[self sub:result];
}
else if ([digitz isEqualToString:@"x"]) {
[self multiply:result];
}
else if ([digitz isEqualToString:@"="]) {
[self equate:result];
}
else {
if (big_digit != nil && [big_digit isEqualToString:@"0"] == FALSE)
big_digit = [big_digit stringByAppendingFormat:@"%@",digitz];
else
big_digit = (NSMutableString *) digitz;
result = (int) big_digit;
newText = [[NSString alloc] initWithFormat:
@"%@",big_digit];
}
screenText.text = newText;
[newText release];
}
- (void)add:(int)res {
NSString * newText = nil;
ans = ans + res;
newText = [[NSString alloc] initWithFormat:
@"%@",ans];
screenText.text = newText;
[newText release];
}
任何人都可以在这里发现一个明显的问题吗?这也是相应的头文件。
#import <UIKit/UIKit.h>
@interface CalculatorViewController : UIViewController {
UILabel *screenText;
int number;
int result;
int ans;
//NSString *big_digit;
NSMutableString * big_digit ;
}
@property (nonatomic, retain) IBOutlet UILabel *screenText;
- (IBAction)buttonPressed:(id)sender;
- (void)collect:(NSString *)digitz;
- (void)add:(int)num;
- (void)sub:(int)num;
- (void)multiply:(int)num;
- (void)equate:(int)num;
@end
最佳答案
嗯,您可能不想只将字符串转换为整数 (ala (int)big_digit)。相反,您想使用 [big_digit integerValue];
我认为发生的情况是您的 big_digit 属性没有保留。在这一行中,您只需为其分配一个自动释放的字符串:
big_digit = [big_digit stringByAppendingFormat:@"%@",digitz];
在下一次遍历中,big_digit 为 != nil,但 [big_digit isEqualToString:@"0"] == FALSE 失败,因为 big_digit 现在指向无效的内存位置。
您想要做的是将 big_digit 设置为界面中的属性,如下所示...
@property (nonatomic, retain) NSMutableString *big_digit;
我知道阅读文档很糟糕,但是看看你的代码,我想你真的会发现阅读这些很有用。 Objective C 中的内存管理与常规的旧 C 有很大不同。 http://developer.apple.com/iphone/library/documentation/cocoa/conceptual/memorymgmt/Articles/mmPractical.html#//apple_ref/doc/uid/TP40004447-SW1
关于iphone - 当按下第三个数字键时,简单的计算器应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2962994/
假设我有这个 .yml用于 Symfony2 i18n 的文件 month: 01: Jan 02: Feb 03: Mar 04: Apr 05: May 06: Jun
我有两个数组 Array ( [010156] => Array ( [supp_number] => 010156 [totalamoun
按住!在标记为重复或投票否决之前 假设我有一个如下所示的 java 脚本对象,我想按值对这个对象进行排序,是的,我知道数组是为此发明的,并且具有内置的 sort 但出于某种原因我必须去与这个对象:(
我们玩得很开心Redis在 Nodejs 上服务器 - 很棒的组合顺便说一句。这个问题是出于好奇,应该被视为“理论上”。 将值存储在数字键(1、2、3、4...)和压缩键(A9z3、A9z4、A9z5
我是一名优秀的程序员,十分优秀!