Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
Iphone Objective-C嵌套块的格式设置提示_Iphone_Objective C_Objective C Blocks - Fatal编程技术网

Iphone Objective-C嵌套块的格式设置提示

Iphone Objective-C嵌套块的格式设置提示,iphone,objective-c,objective-c-blocks,Iphone,Objective C,Objective C Blocks,我不想在这里开始代码格式化圣战,但我想知道是否有人对如何最好地格式化Objective-C中的嵌套块有什么建议 下面是我今天写的一些代码: [UIView animateWithDuration:1.0 animations:^{ self.alpha = 0.5; } completion:^(BOOL finished){ [UIView animateWithDuration:1.0 animatio

我不想在这里开始代码格式化圣战,但我想知道是否有人对如何最好地格式化Objective-C中的嵌套块有什么建议

下面是我今天写的一些代码:

 [UIView animateWithDuration:1.0
      animations:^{
       self.alpha = 0.5;
      }
      completion:^(BOOL finished){
       [UIView animateWithDuration:1.0
            animations:^{
             winView.alpha = 1.0;             
            }
            completion:^(BOOL finished){
             winView.alpha = 0.0;
            }];
  }];
我几乎让Xcode格式化它,这并不可怕。但我有点担心在六个月后我会偶然发现这个来修复一些错误,并想打自己的脸


有人对如何使嵌套块尽可能可读有任何指导吗?

这就是为什么通用标准是一个方法或函数只有一个块参数,并且始终将块作为最后一个块。在本例中,这可能是
UIView
提供的最自然的功能,您就可以使用它了

无论如何,你的方法是正确的。如果有的话,我可能会将内部块作为局部变量进行分解,并将其作为参数传递。或者更多的街区


然而,能够选择整个文件并对整个文件进行Xcode重新格式化的方法是一个巨大的时间节约;我一直在选择源上的所有选项卡。将差异和不一致性降至最低。

这正是为什么通用标准对方法或函数只有一个块参数,并且始终将块作为最后一个块。在本例中,这可能是
UIView
提供的最自然的功能,您就可以使用它了

无论如何,你的方法是正确的。如果有的话,我可能会将内部块作为局部变量进行分解,并将其作为参数传递。或者更多的街区


然而,能够选择整个文件并对整个文件进行Xcode重新格式化的方法是一个巨大的时间节约;我一直在选择源上的所有选项卡。最大限度地减少差异和不一致性。

这里真正的问题是采用多个块参数的方法,这使得它要么丑陋,要么难以读取。我还没有编写任何真正需要使用它的代码,但有一种可能是将
}
]分开如下所示:

[UIView animateWithDuration:1.0
    animations:^{
        self.alpha = 0.5;
    }
    completion:^(BOOL finished){
        [UIView animateWithDuration:1.0
            animations:^{
                winView.alpha = 1.0;             
            }
            completion:^(BOOL finished){
                winView.alpha = 0.0;
            }
        ];
    }
];

这打破了块的标准格式(将
}
];
放在一起),但我认为它的可读性稍高一些。

这里的真正问题是采用多个块参数的方法,这使得它要么难看,要么难以阅读。我还没有编写任何真正需要使用它的代码,但有一种可能是将
}
]分开如下所示:

[UIView animateWithDuration:1.0
    animations:^{
        self.alpha = 0.5;
    }
    completion:^(BOOL finished){
        [UIView animateWithDuration:1.0
            animations:^{
                winView.alpha = 1.0;             
            }
            completion:^(BOOL finished){
                winView.alpha = 0.0;
            }
        ];
    }
];
这打破了块的标准格式(将
}
];
放在一起),但我认为它更具可读性。

我建议这样做

[UIView animateWithDuration:0
                 animations:^
 {
     [UIView animateWithDuration:1
                      animations:^
      {
          <#code#>
      }];
 }
                 completion:^(BOOL finished)
 {
     [UIView animateWithDuration:1
                      animations:^
      {
          <#code#>
      }
                      completion:^(BOOL finished)
      {
          <#code#>
      }];
 }];
[UIView animateWithDuration:0
动画:^
{
[UIView animateWithDuration:1
动画:^
{
}];
}
完成:^(布尔完成)
{
[UIView animateWithDuration:1
动画:^
{
}
完成:^(布尔完成)
{
}];
}];
默认行为

[UIView animateWithDuration:0
                 animations:^{
                     [UIView animateWithDuration:1
                                      animations:^{
                                          <#code#>
                                      }];
                 } completion:^(BOOL finished) {
                     [UIView animateWithDuration:1
                                      animations:^{
                                          <#code#>
                                      } completion:^(BOOL finished) {
                                          <#code#>
                                      }];
                 }];
[UIView animateWithDuration:0
动画:^{
[UIView animateWithDuration:1
动画:^{
}];
}完成:^(布尔完成){
[UIView animateWithDuration:1
动画:^{
}完成:^(布尔完成){
}];
}];
(请注意,它是完全相同的代码)

我知道Xcode强制在同一行中打开大括号,但请注意,在块的情况下,在新行中打开大括号可以让您编写代码4(!!!)倍于左边

另外,我认为它提高了可读性。

我建议如何

[UIView animateWithDuration:0
                 animations:^
 {
     [UIView animateWithDuration:1
                      animations:^
      {
          <#code#>
      }];
 }
                 completion:^(BOOL finished)
 {
     [UIView animateWithDuration:1
                      animations:^
      {
          <#code#>
      }
                      completion:^(BOOL finished)
      {
          <#code#>
      }];
 }];
[UIView animateWithDuration:0
动画:^
{
[UIView animateWithDuration:1
动画:^
{
}];
}
完成:^(布尔完成)
{
[UIView animateWithDuration:1
动画:^
{
}
完成:^(布尔完成)
{
}];
}];
默认行为

[UIView animateWithDuration:0
                 animations:^{
                     [UIView animateWithDuration:1
                                      animations:^{
                                          <#code#>
                                      }];
                 } completion:^(BOOL finished) {
                     [UIView animateWithDuration:1
                                      animations:^{
                                          <#code#>
                                      } completion:^(BOOL finished) {
                                          <#code#>
                                      }];
                 }];
[UIView animateWithDuration:0
动画:^{
[UIView animateWithDuration:1
动画:^{
}];
}完成:^(布尔完成){
[UIView animateWithDuration:1
动画:^{
}完成:^(布尔完成){
}];
}];
(请注意,它是完全相同的代码)

我知道Xcode强制在同一行中打开大括号,但请注意,在块的情况下,在新行中打开大括号可以让您编写代码4(!!!)倍于左边

而且,我认为它提高了可读性