我目前正在为 iPhone 开发我的第一个应用程序,我几乎完成了,但我遇到了内存管理等问题。请记住,我对 java 非常擅长,而且我只学习了 Objective C 大约 4 天。
因此,确切的问题在于该区域(星号行之间)。注意:如果重要的话,所有代码都位于一个大游戏循环中。
else
{
***********************************
NSString *rand = [NSString stringWithFormat:@"%@", randNumberS];
while(lastTime + interval >= currentTime)
{
!!!!!!!!!NSString *user = [NSString stringWithFormat:@"%@", userText];
if([user isEqualToString: rand])
{
***********************************
score += 10;
randNumberS = nil;
timeToGenerateNum = true;
bottomClear = true;
break;
}
else
{
//NSLog(@"%@ != %@, %i", userText, randNumberS, score);
}
}
NSLog(@"Game Over! Your score was %i!", score);
}
}
每次我在启用僵尸之前运行(注意:代码运行了几秒钟顺便说一句),我Thread 6: Program received signal: "EXC_BAD_ACCESS"
在标有“!”的行处得到一个。启用僵尸后,它会运行几秒钟,然后停止工作,并且消息-[CFString respondsToSelector:]: message sent to deallocated instance 0x11168440
出现在控制台中。它还用“!”标记同一行
我查看了这两个,它们都指向糟糕的内存管理,我尝试释放 NSString 对象,但我的程序不允许我释放对象(注意:我收到此错误消息"release" is unavailable: not available in automatic reference counting mode
)。
任何帮助将不胜感激,谢谢!
编辑:
userText 用在多种方法中,但主要是在这个方法中。
-(IBAction)button1Clicked:(id)sender
{
if(userText == nil)
{
userText = [NSString stringWithFormat:@"%i", 1];
}
else
{
userText = [NSString stringWithFormat:@"%@%i",userText , 1];
}
bottomLabel.text = userText;
NSLog(@"Test 1");
}