尝试超过 if 语句会导致崩溃 [关闭]

Posted

技术标签:

【中文标题】尝试超过 if 语句会导致崩溃 [关闭]【英文标题】:Attempting a more-than if statement causes crash [closed] 【发布时间】:2014-03-12 13:42:37 【问题描述】:

我对 ios 开发很陌生,问这个问题我可能看起来像个白痴。 但尝试此操作会使应用完全崩溃。

- (IBAction)action:(id)sender

    if(NSInteger >= 4) 
        timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                 target:self selector:@selector(countup)userInfo:nil repeats:YES];
        NSLog(@"Action: ‘action' succeeded");
    
    else
    
        [screen setText:[NSString stringWithFormat:@“You cannot do this."]];
        NSLog(@"Action: ‘action' failed");
    

计数定义为:

- (void)countup

    NSInteger += 1;
    [screen setText:[NSString stringWithFormat:@"Seconds: %d", NSInteger]];

我不知道自己做错了什么,我已经尝试修复了几个小时,但找不到任何对我有帮助的答案。

【问题讨论】:

NSInteger >= 4 & NSInteger += 1: NSInteger,这是变量名? 它们的值相同 我认为这段代码根本没有运行。 @StevenM NSInteger += 1 应该是 NSInteger myInt +=1 并且你应该遵循整个应用程序 NSInteger 是类型 myInt 是你可以操作的实际变量。 @sbarow:如果这是应用程序无法编译的原因。但 OP 声称它崩溃。 - (顺便说一句,你可以调用变量NSInteger,这并不意味着你应该! 【参考方案1】:

我假设您至少具备一些其他语言的计算机编程知识,然后是 Objective-C。

我会讲这一行,但同样的问题出现在你的代码中的几行

if(NSInteger >= 4)

您将类型 NSInteger 与一个数字 (4) 进行比较。我假设您想将 NSInteger 类型的变量与数字 4 进行比较!

因此,您的代码将如下所示:

NSInteger mySavedNumber = 20;
if(mySavedNumber >= 4)

办公室。 'mySavedNumber' 是我随机选择的变量的名称,您可能应该将其更改为对您有意义的东西,但我不知道您的其余代码,我真的不知道您想要做什么.但是你不能把它命名为 NSInteger,因为 'NSInteger' 是一个已经被占用的名字。

出于同样的原因,这行代码也行不通:

NSInteger += 1;

同样,NSInteger 只是一个类型,而不是变量本身。

【讨论】:

如果这是应用程序无法编译的原因。但 OP 声称它崩溃。 - (顺便说一句,你可以调用变量NSInteger,这并不意味着你应该!【参考方案2】:

你需要使用一个变量。

NSInteger x;

然后

if (x >= 4) ...
[NSString stringWithFormat:@"Seconds: %d", x] ...

【讨论】:

【参考方案3】:

NSInteger 是类型而不是变量。 你应该有NSInteger myInt 和使用myInt

if(myInt >= 4)

myInt++;

【讨论】:

【参考方案4】:

老兄,你需要创建一个 NSInteger 类型的变量。创建一个变量,然后使用它代替 NSInteger。

修改代码

-(IBAction)action:(id)sender

    NSInteger num;

    if(num >= 4) 
        timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countup)userInfo:nil repeats:YES];

        NSLog(@"Action: ‘action' succeeded");
    
    else 
        [screen setText:[NSString stringWithFormat:@“You cannot do this."]];

        NSLog(@"Action: ‘action' failed");
    


-(void)countup

    num += 1;
    [screen setText:[NSString stringWithFormat:@"Seconds: %d", num]];

【讨论】:

以上是关于尝试超过 if 语句会导致崩溃 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

调用 `reloadItems(at:)` 会导致程序崩溃

批处理文件 If 语句导致 CMD 关闭且不起作用

即使不是真的,如果语句总是运行[关闭]

(JavaScript) 为啥 while 循环中的“if”中的 continue 语句会使浏览器崩溃?

select * from表超过多少条记录数据库会崩溃?

为啥我不能在“if”语句中与 '_' 字符进行比较? [关闭]