iOS代码典型,iOS开荒代码标准
分类:计算机编程

  • 1> 统一要求

    • 含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释; 使用全称,不适用缩写
  • 2> 类的命名

    • 大驼峰式命名:每个单词的首字母都采用大写字母, 例子:LYHomePageViewController
      • 后缀要求:
        • ViewController : 使用ViewController做后缀, 例子: MFHomeViewController
        • View : 使用View做后缀, 例子: MFAlertView
        • UITableCell : 使用Cell做后缀, 例子: MFNewsCell
        • Protocol : 使用Delegate或者DataSource作为后缀, 例子: UITableViewDelegate
  • 3> 私有变量

    • 小驼峰式命名:第一个单词以小写字母开始,后面的单词的首字母全部大写. 例子:firstName、lastName
    • 以 _ 开头,第一个单词首字母小写 : 例子:NSString * _somePrivateVariable, 私有变量放在 .m 文件中声明
  • 4> property变量

    • 小驼峰式命名, 例子:

1. 关于命名

1. 关于命名

 1> 统一要求

  • 含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释

  • 使用全称,不适用缩写

 1> 统一要求

  • 含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释

  • 使用全称,不适用缩写

 ///注释 @property (nonatomic, copy) NSString *userName;

 2> 类的命名

  • 大驼峰式命名:每个单词的首字母都采用大写字母

   例子:MFHomePageViewController

  • 后缀要求

  ViewController: 使用ViewController做后缀

       例子: MFHomeViewController

     View: 使用View做后缀

       例子: MFAlertView

     UITableCell:使用Cell做后缀

       例子: MFNewsCell

     Protocol: 使用Delegate或者DataSource作为后缀

       例子: UITableViewDelegate

     UI控件依次类推

 2> 类的命名

  • 大驼峰式命名:每个单词的首字母都采用大写字母

   例子:MFHomePageViewController

  • 后缀要求

  ViewController: 使用ViewController做后缀

       例子: MFHomeViewController

     View: 使用View做后缀

       例子: MFAlertView

     UITableCell:使用Cell做后缀

       例子: MFNewsCell

     Protocol: 使用Delegate或者DataSource作为后缀

       例子: UITableViewDelegate

     UI控件依次类推

  • 5> 宏命名

    • 全部大写,单词间用 _ 分隔。[不带参数]. 例子: #define THIS_IS_AN_MACRO @"THIS_IS_AN_MACRO"
    • 以字母 k 开头,后面遵循大驼峰命名。[不带参数]. 例子:#define kWidth self.frame.size.width
    • 小驼峰命名

       #define getImageUrl [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", kBaseUrl,url]]
      
  • 6> Enum

    • Enum类型的命名与类的命名规则一致
    • Enum中枚举内容的命名需要以该Enum类型名称开头
     typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { AFNetworkReachabilityStatusUnknown = -1, AFNetworkReachabilityStatusNotReachable = 0, AFNetworkReachabilityStatusReachableViaWWAN = 1, AFNetworkReachabilityStatusReachableViaWiFi = 2 };
    
  • 7> Delegate命名

    • 类的实例必须为回调方法的参数之一, 如 : -(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
    • 回调方法的参数只有类自己的情况,方法名要符合实际含义, 如: -(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView
    • 以类的名字开头(回调方法存在两个以上参数的情况)以表明此方法是属于哪个类的, 如: -(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    • 使用did和will通知Delegate已经发生的变化或将要发生的变化, 如: -(NSIndexPath*)tableView:(UITableView*)tableView willSelectRowAtIndexPath:(NSIndexPath*)indexPath; -tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath;
  • 8> 语法糖

    • 代码中使用语法糖,提高写代码效率 :

      • NSArray :
      //NSArray的定义NSArray *array = @[@"lu", @"da", @"shi", @YES, @123];//NSArray的访问array[index];
      
      • NSDictionary
      //NSDictionary的定义简化NSDictionary *dictionary = @{ @"key0" : @"value0", @"key1" : @"value1", @"key2" : @"value2"};//NSDictionary访问数据简化dictionary[@"key2"];
      
      • NSNumber
      NSNumber *a = @123;NSNumber *b = @11.2;NSNumber *c = @;
      

 3> 私有变量

  • 小驼峰式命名:第一个单词以小写字母开始,后面的单词的首字母全部大写

  例子:firstName、lastName

  • 以 _ 开头,第一个单词首字母小写

  例子:NSString * _somePrivateVariable

  • 私有变量放在 .m 文件中声明 

 3> 私有变量

  • 小驼峰式命名:第一个单词以小写字母开始,后面的单词的首字母全部大写

  例子:firstName、lastName

  • 以 _ 开头,第一个单词首字母小写

  例子:NSString * _somePrivateVariable

  • 私有变量放在 .m 文件中声明 

 4> property变量

  • 小驼峰式命名

   例子:///注释

      @property (nonatomic, copy) NSString *userName;

  • 禁止使用synthesize关键词

 4> property变量

  • 小驼峰式命名

   例子:///注释

      @property (nonatomic, copy) NSString *userName;

  • 禁止使用synthesize关键词
  • 1> 声明位置

    • 在.m文件中最上方,定义空的category进行声明, 例子:
    #import "CodeStandardViewController.h"// 在这个category中定义变量和方法@interface CodeStandardViewController (){ // 声明私有变量}// 私有方法- samplePrivateMethod;@end@implementation CodeStandardViewController// 私有方法的实现- samplePrivateMethod{ //some code}
    
  • 2> 常量使用

  • 常量是容易重复被使用和无需通过查找和代替就能快速修改值。常量应该使用static来声明而不是使用#define,除非显式地使用宏。

    • 应该:
     static NSString * const RWTAboutViewControllerCompanyName = @"RayWenderlich.com"; static CGFloat const RWTImageThumbnailHeight = 50.0;
    
    • 不应该:
     #define CompanyName @"RayWenderlich.com" #define thumbnailHeight 2
    

 5> 宏命名

  • 全部大写,单词间用 _ 分隔。[不带参数]

  例子: #define THIS_IS_AN_MACRO @"THIS_IS_AN_MACRO"

  • 以字母 k 开头,后面遵循大驼峰命名。[不带参数]

  例子:#define kWidth self.frame.size.width

  • 小驼峰命名。[带参数]

  #define getImageUrl(url) [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",kBaseUrl,url]]

 5> 宏命名

  • 全部大写,单词间用 _ 分隔。[不带参数]

  例子: #define THIS_IS_AN_MACRO @"THIS_IS_AN_MACRO"

  • 以字母 k 开头,后面遵循大驼峰命名。[不带参数]

  例子:#define kWidth self.frame.size.width

  • 小驼峰命名。[带参数]

  #define getImageUrl(url) [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",kBaseUrl,url]]

 6> Enum

  • Enum类型的命名与类的命名规则一致

  • Enum中枚举内容的命名需要以该Enum类型名称开头

  例子:

1 typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
2     AFNetworkReachabilityStatusUnknown = -1,
3     AFNetworkReachabilityStatusNotReachable = 0,
4     AFNetworkReachabilityStatusReachableViaWWAN = 1,
5     AFNetworkReachabilityStatusReachableViaWiFi = 2
6     };

 6> Enum

  • Enum类型的命名与类的命名规则一致

  • Enum中枚举内容的命名需要以该Enum类型名称开头

  例子:

1 typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
2     AFNetworkReachabilityStatusUnknown = -1,
3     AFNetworkReachabilityStatusNotReachable = 0,
4     AFNetworkReachabilityStatusReachableViaWWAN = 1,
5     AFNetworkReachabilityStatusReachableViaWiFi = 2
6     };
 - 最好的代码是不需要注释的 尽量通过合理的命名 - 良好的代码把含义表达清楚 在必要的地方添加注释 - 注释需要与代码同步更新 - 如果做不到命名尽量的见名知意的话,就可以适当的添加一些注释或者mark

 7> Delegate命名

  • 类的实例必须为回调方法的参数之一, 如

  -(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section

  • 回调方法的参数只有类自己的情况,方法名要符合实际含义, 如:

      -(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView

  • 以类的名字开头(回调方法存在两个以上参数的情况)以表明此方法是属于哪个类的, 如:

  -(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

  • 使用did和will通知Delegate已经发生的变化或将要发生的变化, 如:

  -(NSIndexPath*)tableView:(UITableView*)tableView willSelectRowAtIndexPath:(NSIndexPath*)indexPath;
  -(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath;

 7> Delegate命名

  • 类的实例必须为回调方法的参数之一, 如

  -(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section

  • 回调方法的参数只有类自己的情况,方法名要符合实际含义, 如:

      -(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView

  • 以类的名字开头(回调方法存在两个以上参数的情况)以表明此方法是属于哪个类的, 如:

  -(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

  • 使用did和will通知Delegate已经发生的变化或将要发生的变化, 如:

  -(NSIndexPath*)tableView:(UITableView*)tableView willSelectRowAtIndexPath:(NSIndexPath*)indexPath;
  -(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath;

  • 1> 属性注释

    /// 学生@property (nonatomic, strong) Student *student;
    
  • 2> 方法声明注释:

     /** * @brief 登录验证 * * @param personId 用户名 * @param password 密码 * @param complete 执行完毕的block * * @return */  loginWithPersonId:(NSString *)personId password:(NSString *)password complete:(CheckLogon *result))complete;
    

2. 私有方法及变量声明

 1> 声明位置

  在.m文件中最上方,定义空的category进行声明
   例子:

图片 1

 1        #import "CodeStandardViewController.h"
 2     // 在这个category(类目)中定义变量和方法
 3     @interface CodeStandardViewController ()
 4     {
 5 
 6       // 声明私有变量
 7     }
 8 
 9      // 私有方法
10     - (void)samplePrivateMethod;
11     @end
12 
13     @implementation CodeStandardViewController
14     // 私有方法的实现
15     - (void)samplePrivateMethod
16     {
17       //some code
18     }

图片 2

2. 私有方法及变量声明

 1> 声明位置

  在.m文件中最上方,定义空的category进行声明
   例子:

 1        #import "CodeStandardViewController.h"
 2     // 在这个category(类目)中定义变量和方法
 3     @interface CodeStandardViewController ()
 4     {
 5 
 6       // 声明私有变量
 7     }
 8 
 9      // 私有方法
10     - (void)samplePrivateMethod;
11     @end
12 
13     @implementation CodeStandardViewController
14     // 私有方法的实现
15     - (void)samplePrivateMethod
16     {
17       //some code
18     }

3. 关于注释

 最好的代码是不需要注释的 尽量通过合理的命名

 良好的代码把含义表达清楚 在必要的地方添加注释

 注释需要与代码同步更新

 如果做不到命名尽量的见名知意的话,就可以适当的添加一些注释或者mark

3. 关于注释

 最好的代码是不需要注释的 尽量通过合理的命名

 良好的代码把含义表达清楚 在必要的地方添加注释

 注释需要与代码同步更新

 如果做不到命名尽量的见名知意的话,就可以适当的添加一些注释或者mark

  • 1> 使用Interface Builder进行界面布局
    • Xib文件的命名与其对应的.h文件保持相同
    • Xib文件中控件的组织结构要合理,Xib文件中控件需要有合理的可读性强的命名,方便他人理解

 1> 属性注释

  例子:
    /// 学生
    @property (nonatomic, strong) Student *student;

 1> 属性注释

  例子:
    /// 学生
    @property (nonatomic, strong) Student *student;

 2> 方法声明注释:

图片 3

 1     /** 
 2    * @brief 登录验证
 3    *
 4    * @param personId 用户名
 5    * @param password 密码
 6    * @param complete 执行完毕的block
 7    *
 8    * @return
 9    */
10     (void)loginWithPersonId:(NSString *)personId password:(NSString *)password complete:(void (^)(CheckLogon *result))complete;

图片 4

 2> 方法声明注释:

 1     /** 
 2    * @brief 登录验证
 3    *
 4    * @param personId 用户名
 5    * @param password 密码
 6    * @param complete 执行完毕的block
 7    *
 8    * @return
 9    */
10     (void)loginWithPersonId:(NSString *)personId password:(NSString *)password complete:(void (^)(CheckLogon *result))complete;
  • 1> 指针 "*" 位置

    • 定义一个对象时,指针 "*" 靠近变量. 例子: NSString *userName;
  • 2> 方法的声明和定义

    • 在 - 、 和 返回值 之间留一个空格,方法名和第一个参数之间不留空格 : - initWithNibName:(NSString *)nibNameOrNilbundle:(NSBundle *)nibBundleOrNil{...}
  • 3> 代码缩进

    • 使用 xcode 默认缩进,即 tab = 4空格
    • 使用 xcode 中 re-indent 功能定期对代码格式进行整理
    • 相同类型变量声明需要独行声明

      CGFloat oringX = frame.origin.x;CGFloat oringY = frame.origin.y;CGFloat lineWidth = frame.size.width;// Method与Method之间空一行#pragma mark - private methods- samplePrivateMethod{...}- sampleForIf{...}
      

4. 关于UI布局

 使用Interface Builder进行界面布局

 Xib文件的命名与其对应的.h文件保持相同

 Xib文件中控件的组织结构要合理,Xib文件中控件需要有合理的可读性强的命名,方便他人理解

4. 关于UI布局

 使用Interface Builder进行界面布局

 Xib文件的命名与其对应的.h文件保持相同

 Xib文件中控件的组织结构要合理,Xib文件中控件需要有合理的可读性强的命名,方便他人理解

5. 格式化代码

5. 格式化代码

  • 4> 对method进行分组

    • 使用 #pragma mark - 方式对类的方法进行分组, 例子:
     #pragma mark - private methods - samplePrivateMethod{...} - sampleForIf{...} - sampleForWhile{...} - sampleForSwitch{...} - wrongExamples{...} #pragma mark - public methods - samplePublicMethodWithParam:(NSString*)sampleParam{...} #pragma mark - life cycle methods - initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{...} - viewDidLoad{...} - shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{...}
    
  • 5> 大括号写法

    • 对于类的method: 左括号另起一行写
     - initWithNibName:(NSString *)nibNameOrNilbundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if  { // Custom initialization } return self; }
    
    • 对于其他使用场景: 左括号跟在第一行后边
     - sampleForIf{ BOOL someCondition = YES; if(someCondition) { // do something here } } - sampleForWhile{ int i = 0; while (i < 10) { // do something here i = i   1; } }
    
    • 任何需要写大括号的部分,不得省略, 错误示例:
     - wrongExamples{ BOOLsomeCondition = YES; if (someCondition) NSLog(@"this is wrong!!!"); while(someCondition) NSLog(@"this is wrong!!!"); }
    

 1> 指针 "*" 位置

  定义一个对象时,指针 "*" 靠近变量

   例子: NSString *userName;

 1> 指针 "*" 位置

  定义一个对象时,指针 "*" 靠近变量

   例子: NSString *userName;

 2> 方法的声明和定义

  在 - 、 和 返回值 之间留一个空格,方法名和第一个参数之间不留空格

- (id)initWithNibName:(NSString *)nibNameOrNilbundle:(NSBundle *)nibBundleOrNil
{...}

 2> 方法的声明和定义

  在 - 、 和 返回值 之间留一个空格,方法名和第一个参数之间不留空格

- (id)initWithNibName:(NSString *)nibNameOrNilbundle:(NSBundle *)nibBundleOrNil
{...}
  • 原则

    • 采用单词全拼,或者大家公认无岐义的缩写(比如:nav,bg,btn等)
    • 采用“模块 功能”命名法,模块分为公共模块、私有模块。公共模块主要包括统一的背景,导航条,标签,公共的按钮背景,公共的默认图等等;私有模块主要根据app的业务
    • 功能模块划分,比如用户中心,消息中心等
  • 公共模块命名示例:

    • 导航条背影图片:bg_nav_bar@2x.png
    • 导航返回按钮:bg_nav_back_normal@2x.png,bg_nav_back_selected@2x.png
    • 标签item背景:bg_tabbar_record_normal@2x.png,bg_tabbar_record_selected@2x.png
  • 私有模块命名示例:

    以Joggers APP的用户中心图片资源为例说明,uc——user center

    • 用户中心头像默认图:bg_uc_avatar@2x.png
    • 用户中心顶部默认背景图:bg_uc_top_defaut@2x.png
    • 用户中心底部背景图:bg_uc_bottom@2x.png
  • 备注: 这部分工作较为繁杂,并且在程序员心中会认为是技术含量较低的一个工作,但图片命名的严谨性同样会反映出我们对细节的追求,细节决定成败

 3> 代码缩进

  • 使用 xcode 默认缩进,即 tab = 4空格
  • 使用 xcode 中 re-indent 功能定期对代码格式进行整理
  • 相同类型变量声明需要独行声明

  例子:

CGFloatoringX = frame.origin.x;
CGFloatoringY = frame.origin.y;
CGFloatlineWidth = frame.size.width;
  • Method与Method之间空一行

  例子:

图片 5

1 #pragma mark - private methods
2 
3 - (void)samplePrivateMethod
4 {...}
5 
6 - (void)sampleForIf
7 {...}

图片 6

 3> 代码缩进

  • 使用 xcode 默认缩进,即 tab = 4空格
  • 使用 xcode 中 re-indent 功能定期对代码格式进行整理
  • 相同类型变量声明需要独行声明

  例子:

CGFloatoringX = frame.origin.x;
CGFloatoringY = frame.origin.y;
CGFloatlineWidth = frame.size.width;
  • Method与Method之间空一行

  例子:

1 #pragma mark - private methods
2 
3 - (void)samplePrivateMethod
4 {...}
5 
6 - (void)sampleForIf
7 {...}

七) 补充规范

    1. 删除多余的空行
    • 所有方法与方法之间空1行
    • 所有代码块之间空1行
    1. 删除未被使用的资源文件
    1. 整体代码风格需要统一
    • 代码后面的”{“ 不需要单独占用一行
    • 逻辑运算符 与 代码之前空一格
    • #pragma mark - 与下面的代码之前不要空行
  • 4.代码量控制

    • 单页代码最好控制在800行以内,每个方法最好不要超过80行,过多建议对代码进行重构
  • 5.及时更新代码风格

    • 对其他项目中copy过来的代码,根据具体需要更新代码风格,及时删除未被使用的代码
  • 文章引用

 4> 对method进行分组

  使用 #pragma mark - 方式对类的方法进行分组

   例子:

图片 7

 1      #pragma mark - private methods
 2 
 3   - (void)samplePrivateMethod
 4   {...}
 5 
 6   - (void)sampleForIf
 7   {...}
 8 
 9   - (void)sampleForWhile
10   {...}
11   
12   - (void)sampleForSwitch
13   {...}
14 
15   - (void)wrongExamples
16   {...}
17 
18   #pragma mark - public methods
19   - (void)samplePublicMethodWithParam:(NSString*)sampleParam
20   {...}
21 
22   #pragma mark - life cycle methods
23   - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
24   {...}
25 
26   - (void)viewDidLoad
27   {...}
28 
29   - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
30   {...}

图片 8

 4> 对method进行分组

  使用 #pragma mark - 方式对类的方法进行分组

   例子:

 1      #pragma mark - private methods
 2 
 3   - (void)samplePrivateMethod
 4   {...}
 5 
 6   - (void)sampleForIf
 7   {...}
 8 
 9   - (void)sampleForWhile
10   {...}
11   
12   - (void)sampleForSwitch
13   {...}
14 
15   - (void)wrongExamples
16   {...}
17 
18   #pragma mark - public methods
19   - (void)samplePublicMethodWithParam:(NSString*)sampleParam
20   {...}
21 
22   #pragma mark - life cycle methods
23   - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
24   {...}
25 
26   - (void)viewDidLoad
27   {...}
28 
29   - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
30   {...}

 5> 大括号写法

  • 对于类的method: 左括号另起一行写(遵循苹果官方文档)

       例子:

图片 9

 1      - (id)initWithNibName:(NSString *)nibNameOrNilbundle:(NSBundle *)nibBundleOrNil
 2   {
 3       self = [super initWithNibName:nibNameOrNil
 4 
 5       bundle:nibBundleOrNil];
 6 
 7       if (self) {
 8             // Custom initialization
 9         }
10 
11       return self;
12 }

图片 10

  • 对于其他使用场景: 左括号跟在第一行后边

      例子:

图片 11

 1 - (void)sampleForIf
 2 {
 3     BOOL someCondition = YES;
 4     if(someCondition) {
 5         // do something here
 6     }
 7 }
 8 - (void)sampleForWhile
 9 {
10     int i = 0;
11     while (i < 10) {
12         // do something here
13         i = i   1;
14     }
15 }
16 - (void)sampleForSwitch
17 {
18     SampleEnum testEnum = SampleEnumTwo;
19     switch(testEnum) {
20         caseSampleEnumUndefined:{
21             // do something
22             break;
23         }
24         caseSampleEnumOne:{
25             // do something
26             break;
27         }
28         caseSampleEnumTwo:{
29             // do something
30             break;
31         }
32         default:{
33             NSLog(@"WARNING: there is an enum type not handled properly!");
34             break;
35         }
36     }

图片 12

  • 任何需要写大括号的部分,不得省略

      错误示例:

图片 13

1 - (void)wrongExamples
2 {
3     BOOLsomeCondition = YES;
4     if (someCondition)
5         NSLog(@"this is wrong!!!");
6     while(someCondition)
7         NSLog(@"this is wrong!!!");
8 }

图片 14

 5> 大括号写法

  • 对于类的method: 左括号另起一行写(遵循苹果官方文档)

       例子:

    1 - (id)initWithNibName:(NSString )nibNameOrNilbundle:(NSBundle )nibBundleOrNil 2   { 3    self = [super initWithNibName:nibNameOrNil 4 5    bundle:nibBundleOrNil]; 6 7    if (self) { 8 // Custom initialization 9 } 10 11    return self; 12 }

  • 对于其他使用场景: 左括号跟在第一行后边

      例子:

    1 - (void)sampleForIf 2 { 3 BOOL someCondition = YES; 4 if(someCondition) { 5 // do something here 6 } 7 } 8 - (void)sampleForWhile 9 { 10 int i = 0; 11 while (i < 10) { 12 // do something here 13 i = i 1; 14 } 15 } 16 - (void)sampleForSwitch 17 { 18 SampleEnum testEnum = SampleEnumTwo; 19 switch(testEnum) { 20 caseSampleEnumUndefined:{ 21 // do something 22 break; 23 } 24 caseSampleEnumOne:{ 25 // do something 26 break; 27 } 28 caseSampleEnumTwo:{ 29 // do something 30 break; 31 } 32 default:{ 33 NSLog(@"WARNING: there is an enum type not handled properly!"); 34 break; 35 } 36 }

  • 任何需要写大括号的部分,不得省略

      错误示例:

1 - (void)wrongExamples
2 {
3     BOOLsomeCondition = YES;
4     if (someCondition)
5         NSLog(@"this is wrong!!!");
6     while(someCondition)
7         NSLog(@"this is wrong!!!");
8 }

本文由pc28.am发布于计算机编程,转载请注明出处:iOS代码典型,iOS开荒代码标准

上一篇:怎么制作出动感的波浪动画,关键帧动画和波浪 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 怎么制作出动感的波浪动画,关键帧动画和波浪
    怎么制作出动感的波浪动画,关键帧动画和波浪
    模拟机Demo浪.gif 表头浪.gif 邻近Taobao个人音讯状态栏,京东财政和经济等双波浪动画 首要方法 :通过自定义View,利用正弦函数与余弦函数的效果. 补上:Demo地址
  • CAGradientLayer渐变效果使用及民用掌握,图片折叠
    CAGradientLayer渐变效果使用及民用掌握,图片折叠
    layer单位坐标 属性疏解 动用表率及代码讲授 CALayer图层结构 mask的理解 影响mask行为的因素 mask使用前提 模范演示 上一篇小说介绍了maskView的规律和着力选取
  • 访客视图,导航栏颜色
    访客视图,导航栏颜色
    菁优网首页动画.gif 前言 在付出进度中,平时会碰着调整器对应的导航栏的背景颜色不均等或许须要让导航栏背景透明的须求。在导航调节器push和pop视图调
  • iOS学习之触摸事件,iOS之触摸及手势
    iOS学习之触摸事件,iOS之触摸及手势
    iOS设备现近年来大受接待的最要害原因之一就在于其创建了触控操作的时尚。发展于今,无论是Android仍旧三星,未来应用程式与客商张开相互,基本上都以
  • 来得学习进程,到底快非常慢
    来得学习进程,到底快非常慢
    当需要显示学习进度完成的情况,发现以"时间线"的方式显示效果不错,写个简单demo以供参考. 主要实现方式 :通过自定义tableViewCell即可.Cell的形式可以换成气