尝试在iOS中删除警告

时间:2013-03-29 04:59:55

标签: ios objective-c

我正在实现委托方法:

-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

我在我的应用程序中使用了以下代码。但是,我收到了警告,我不知道为什么。我的代码如下:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

        if (textField.tag == 1) {

            if(blah blah blah)
                return YES;

            //more code

            if (blah blah) {

                //more code

            }

            else if (blah blah) {

                //more code;

            }

            else if (blah blah blah) {

                //more code

            }


            //even more code

            return NO;

        }

        else if (textField.tag == 2){

            if(textField.text.length > 1) {

                return NO;

            }

            return YES;

        }

        else if (textField.tag == 3) {

            if(textField.text.length > 2) {

                return NO;

            }

            return YES;

        }


    }

我得到的警告是:

“控制可能会达到无效功能的结束。”我在每个“if”子句的末尾都有返回值,为什么我仍然会收到此警告?

5 个答案:

答案 0 :(得分:2)

你的函数应该接收一个布尔值,因为你的函数有返回类型BOOL not void put

return YES; 

在条件/迭代语句的shouldChangeCharactersInRange:()方法的末尾。

然后应该发出警告。

答案 1 :(得分:2)

  

我在每个“if”子句

的末尾都有返回值

不,你没有。最后一个else分支未实现。

答案 2 :(得分:0)

在方法结束时添加return YES/NO;。可能会解决你的问题。因为如果你有任何一个 if - condition - Block未执行,则此方法未返回值。

答案 3 :(得分:0)

编译器看到如果textfield.tag不是1,2或3,则没有返回值。在功能结束时添加返回YES / NO。

答案 4 :(得分:0)

请尝试使用这个...

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
    {
        if (textField.tag == 1)
        {

          if(blah blah blah)
            return YES;

        //more code

          if (blah blah)
          {

            //more code

          }

          else if (blah blah)
          {

            //more code;

          }

          else if (blah blah blah)
          {

            //more code

          }


         //even more code

         return NO;

        }

        else if (textField.tag == 2)
        {

         if(textField.text.length > 1) 
         {

            return NO;

        }

        return YES;

      }

    else if (textField.tag == 3) {

        if(textField.text.length > 2) {

            return NO;

        }

        return YES;

      }

    }
return YES;
}