【问题标题】:What's a naming convention for typedefing blocks?typedefing 块的命名约定是什么?
【发布时间】:2014-04-16 18:30:23
【问题描述】:

我用 typedef 声明了很多块类型;它们有什么命名约定吗?

【问题讨论】:

  • 您找到问题的解决方案/答案了吗?

标签: objective-c naming-conventions objective-c-blocks typedef


【解决方案1】:

请参阅 Apple 文档中的此处,Enumerated constantsNaming Properties and Data Types

我在 Apple 的文档中找不到任何内容,但我确实从 AppCelerator 找到了一个。

【讨论】:

  • 我不太明白;枚举常量与块有什么关系?
【解决方案2】:

来自Apple doc,它是带有 Objective-C 命名约定样式(显式/详细)的 CamelCase

【讨论】:

  • 您链接到的页面没有解决objective-c中块的命名约定;但是,它确实给出了如何编写块的示例。你能添加一个命名约定的链接吗?
  • 来自文档:“typedef float (^MyBlockType)(float, float);”,来自使用 Objective-C 编程:“typedef void (^XYZSimpleBlock)(void);”我认为他们不需要更明确:)
  • 我同意,它是如何编写它的一个很好的例子......这并不意味着它是一个命名约定。 Apple 似乎没有块的命名约定。很可能是由于该块由(除其他外)变量、常量和类组成,它们都有自己的命名约定;因此,我不认为 Apple 认为为 Blocks 编写单独的约定足够重要。
  • 确实,你会在网上找到很多 C 风格的 typedef my_block 或 myBlock 小写驼峰 :)
【解决方案3】:

经过大量研究,Apple 似乎没有对它们的块进行类型定义,而是更喜欢明确命名参数的使用位置。他们的 Cocoa 风格指南也没有提到块被 typedef'd。

例如从NSURLSessionTaskDelegate看NSURLSession.h中的这个方法:

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
                     willPerformHTTPRedirection:(NSHTTPURLResponse *)response
                                     newRequest:(NSURLRequest *)request
                              completionHandler:(void (^)(NSURLRequest * _Nullable))completionHandler;

请注意,completionHandler 不接收 typedef。

在我看来,只有当定义可以立即重用并且足够通用以在多个地方使用时,才对块进行 typedef 才有意义。

【讨论】:

    猜你喜欢
    • 2011-08-20
    • 2012-11-09
    • 2011-10-06
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2015-09-11
    相关资源
    最近更新 更多