【问题标题】:An Important Question about NSString关于 NSString 的一个重要问题
【发布时间】:2010-07-22 19:19:43
【问题描述】:

问题是在我按下 2 个按钮后,应用程序崩溃了,我不知道为什么

Button1 连接到 button1 Button2 连接到 button2 ... Button5 连接到 button5

我做错了什么?

基本上我想检查#的序列是否正确打入(55235)

在我的 AppDelegate.H 文件中,我定义了一个名为

的变量

NSString* myEasterEgg;

在 AppDelegate.M 中,我有 5 个正确连接的按钮,每个按钮都有自己的方法

-(IBAction)button1:(id)sender
{
if(CFStringCompare((CFStringRef)myEasterEgg, (CFStringRef)@"52235", 1) == 0)
{
myEasterEgg = @"";
} else {
myEasterEgg = [myEasterEgg stringByAppendingString:@"1"];
}
}

-(IBAction)button2:(id)sender
{
if(CFStringCompare((CFStringRef)myEasterEgg, (CFStringRef)@"52235", 1) == 0)
{
myEasterEgg = @"";
} else {
myEasterEgg = [myEasterEgg stringByAppendingString:@"2"];
}
}

-(IBAction)button3:(id)sender
{
if(CFStringCompare((CFStringRef)myEasterEgg, (CFStringRef)@"52235", 1) == 0)
{
myEasterEgg = @"";
} else {
myEasterEgg = [myEasterEgg stringByAppendingString:@"3"];
}
}

-(IBAction)button4:(id)sender
{
if(CFStringCompare((CFStringRef)myEasterEgg, (CFStringRef)@"52235", 1) == 0)
{
myEasterEgg = @"";
} else {
myEasterEgg = [myEasterEgg stringByAppendingString:@"4"];
}
}

-(IBAction)button5:(id)sender
{
if(CFStringCompare((CFStringRef)myEasterEgg, (CFStringRef)@"52235", 1) == 0)
{
myEasterEgg = @"";
} else {
myEasterEgg = [myEasterEgg stringByAppendingString:@"5"];
}
}

-(void)viewDidLoad
{
myEasterEgg = [[NSString alloc] initWithString:@""];
}

【问题讨论】:

  • 我收到此错误 EXC_BAD_ACCESS 和 stringByAppendingString

标签: cocoa iphone-sdk-3.0 nsstring ios4


【解决方案1】:

您正在泄漏原始字符串,并用新值替换它而不保留它们。崩溃的发生是因为你在一个悬空指针上调用[myEasterEgg stringByAppendingString:…],也就是说,一个不再引用任何对象的变量。请参阅Memory Management Programming Guide 了解更多信息。

【讨论】:

  • 我在工作,当我单击该链接时会导致 HTML 呈现问题。你能告诉我如何解决它吗?
  • 我使用的是 IE6,因为我们不允许安装真正的浏览器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多