Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 2样式Qs:有没有理由不重复使用标签?切换语句大括号?_Xcode_Login_Tags_Styles_Reusability - Fatal编程技术网

Xcode 2样式Qs:有没有理由不重复使用标签?切换语句大括号?

Xcode 2样式Qs:有没有理由不重复使用标签?切换语句大括号?,xcode,login,tags,styles,reusability,Xcode,Login,Tags,Styles,Reusability,嘿,这里有堆栈溢出!如果你不理解我的问题,请随意跳过代码;这或多或少只是为偶然发现这一线索的学习者提供一些代码 1) 重复使用标签是不是很糟糕 2) 对于switch语句,在每种情况下始终使用大括号是一种好的做法吗?我这样做是因为我很清楚旧的ARC更改会导致“switch case在保护范围内”错误,当您在case块中分配变量时会发生这些错误。我问的原因与#1相同:我希望在不养成不良风格习惯的情况下收紧代码 我只是快速编写这个示例来涵盖这两个方面,所以请原谅打字错误/等等: 登录名 -(void

嘿,这里有堆栈溢出!如果你不理解我的问题,请随意跳过代码;这或多或少只是为偶然发现这一线索的学习者提供一些代码

1) 重复使用标签是不是很糟糕

2) 对于switch语句,在每种情况下始终使用大括号是一种好的做法吗?我这样做是因为我很清楚旧的ARC更改会导致“switch case在保护范围内”错误,当您在case块中分配变量时会发生这些错误。我问的原因与#1相同:我希望在不养成不良风格习惯的情况下收紧代码

我只是快速编写这个示例来涵盖这两个方面,所以请原谅打字错误/等等:

登录名

-(void)irrelevantSignInMethod
{
    //Failed login
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry!" message:@"Log in failed" delegate: self cancelButtonTitle:@"OK" otherButtonTitles:@"Try Again", nil];
    [alert show];
    [alert setTag:1];
    ...
    //Confirmed login
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sweet!" message:@"You've logged in!" delegate: self cancelButtonTitle:@"Sweet!" otherButtonTitles:nil, nil];
    [alert show];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:signInUsername.text forKey:@"username"];
    [defaults synchronize];
    [alert setTag:2];
}

-(void)irrelevantSignUpThenInMethod
{
    ....
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sweet!" message:@"You've registered and logged in!" delegate: self cancelButtonTitle:@"Sweet!" otherButtonTitles: nil];
    [alert show];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [alert setTag:3];
    //Just here to remind code-borrowers to store username somewhere
    [defaults setObject:signInUsername.text forKey:@"username"];
    [defaults synchronize];
    //Here's where the question lies; is there any reason to not tweak to [alert setTag:2], shaving an if statement in the clickButtonAtIndex method?
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    switch (alertView.tag)
    {
        case 1:
        {
            ([[alertView buttonTitleAtIndex:buttonIndex] isEqualToString:@"Try Again"]))
            {
                //I always add an alert with "Try Again" in case the log in failed
                UITextField *username = [alertView textFieldAtIndex:0];
                UITextField *password = [alertView textFieldAtIndex:1];
                signInUsername.text = username.text;
                signInPassword.text = password.text;
                [self attemptSignIn];
                break;
            }
        }
    case 2:
        {
            [self loggedIn];
            break;
        }
        case 3:
        {
            //Here's where question #1 lies; is there any reason to not just assign both alerts the same tag (2) earlier and not need a 3rd case?
            [self loggedIn];
            break;
        }
        case 4:
        {
            //Forgot password scenario. Too lazy to write how I do this out - but will answer if anyone PMs me - those borrowing this code should be prepared for this situation!
            break;
        }
        default:
        {
            break;
        }
    }
}
是的,我意识到代码可能不是必需的——但是谁知道呢,有些人可能会从基本的登录结构中受益。如果我之前不清楚,我会详细说明我的问题:我可以继续分配标记2两次并简化ClickedButtonIndex方法吗?我是计算机科学专业的学生,过去几个学期我都学过这门课,所以我想不起来是否有任何澄清。我怀疑是否存在区分的技术原因,我只关注简洁的代码,但我不想开始养成打破“这是经典方式”的习惯;尤其是当我在风格和与他人合作完成更大的项目时。我知道这是一个很小的问题,但我想知道大多数人是怎么做的,我很想与你的专家进行对话。至于切换括号的问题:我知道这可以被视为偏好(你们中的一些人代码“尽可能简洁”,而其他人代码“尽可能一致”)。。。我只是好奇老练的兽医们认为什么应该是“现状”

3) 我知道这是糟糕的(编辑:糟糕)礼节,但我希望至少有一次“投票”,所以我有资格开始“投票”,因为我每天无数次地使用来自其他线程的知识,作为一个超过五年的潜伏者,我觉得是时候开始用如此宝贵的互联网点数奖励那些有帮助的人了


谢谢你的时间。您确实是理解概念、发现解决方案和开发开发人员的最佳人选。

如果重用标记,我认为您无法识别ClickedButtonIndex委托方法中的哪个警报视图

在包含具有相同标记的子视图的视图中使用viewWithTag函数时,也可能会出现问题

对我来说,最好为标签定义一些常量,这样你可以更容易地查看代码,例如3设置为不相关的\u注册\u警报\u标签。然后在代码中,您可以使用不相关的\u SIGN\u UP\u ALERT\u标记,而不是3,这更容易理解,而不是通过代码猜测3的用途。当需要更改标记时,也不需要逐个更改3的引用

大括号是switch语句的好主意,例如,您可以使用大括号在switch语句中创建一个变量: