Objective-C编码规范(格式缩进)___1

Daniel's Objective-C Coding Style GuidelinesFrom:杨德升 /http://desheng.me/ desheng.young@gmail.com

Date: 2010.10.31

参考资料:

• Apple: Coding Guidelines for Cocoa
• Google: Objective-C Style Guide
• Three20: Source code style guildelines

正文:
格式化代码

指针“*”号的位置
如:NSString*varName;

空格VS tabs
只允许使用空格,将编辑器设置为1个TAB= 2个字符缩进

每行的长度

  • ▪  每行最多不得超过100个字符

  • ▪  以15寸MacbookPro的大小,每行100个字符时能最大化地同时容下编辑器和iPhone模拟器

  • ▪  Google的80字符的标准有点少,这导致过于频繁的换行(Objectve-C的代码一般都很长)

  • ▪  通过“Xcode => Preferences => TextEditing =>勾选Show Page Guide /输入

    100 => OK” 来设置提醒方法的声明和定义

  • ▪  - OR + 和返回值之间留1个空格,方法名和第一个参数间不留空格。如:- (void)doSomethingWithString:(NSString *)theString {

    ...}

  • ▪  当参数过长时,每个参数占用一行,以冒号对齐。如:- (void)doSomethingWith:(GTMFoo *)theFoo

                              rect:(NSRect)theRect
                          interval:(float)theInterval {
    

    ...}

  • ▪  如果方法名比参数名短,每个参数占用一行,至少缩进4个字符,且为垂直对齐(而非使用冒号对齐)。如:
    - (void)short:(GTMFoo *)theFoo

               longKeyword:(NSRect)theRect
    
               evenLongerKeyword:(float)theInterval {
             ...
    

    }

    方法的调用

  • ▪  调用方法沿用声明方法的习惯。例外:如果给定源文件已经遵从某种习惯,继续遵从那种习惯。

  • ▪  所有参数应在同一行中,或者每个参数占用一行且使用冒号对齐。如:

           [myObject doFooWith:arg1 name:arg2 error:arg3];
    

           [myObject doFooWith:arg1
                          name:arg2
    
                         error:arg3];
    
  • ▪  和方法的声明一样,如果无法使用冒号对齐时,每个参数一行、缩进4个字符、垂直对其(而非使用冒号对齐)。如:
    [myObj short:arg1

               longKeyword:arg2
    
               evenLongerKeyword:arg3];
    

    @public@private
    @public@private使用单独一行,且缩进1个字符 


    Protocals

    • ▪  类型标示符、代理名称、尖括号间不留空格。

    • ▪  该规则同样适用于:类声明、实例变量和方法声明。如:

             @interface MyProtocoledClass : NSObject<NSWindowDelegate> {
              @private
      
               id<MyFancyDelegate> _delegate;
             }
      
             - (void)setDelegate:(id<MyFancyDelegate>)aDelegate;
      

      @end

    • ▪  如果类声明中包含多个protocal,每个protocal占用一行,缩进2个字符。如:@interface CustomViewController : ViewController<

               AbcDelegate,
      

      DefDelegate>{

      ...} 




      其他规范见下:

      Objective-C编码规范(命名)_____2





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值