zoukankan      html  css  js  c++  java
  • [Effective Objective-C 读书笔记] 第1章 几条基本写法 (2~5条)

    我的技术博客经常被流氓网站恶意爬取转载。请移步原文:http://www.cnblogs.com/hamhog/p/3575599.html,享受整齐的排版、有效的链接、正确的代码缩进、更好的阅读体验。

    第2条:在类的头文件中尽量少引入头文件

    1. 常规情况:

    在.h文件中:(写在@interface之前)

    @class SomeClass;

    在.m文件中:

    #import "SomeClass.h"

    2. 必须在.h中引入头文件的情况:

    1. 类继承某个超类
    2. 类实现某个协议

    第3条:尽量使用“字面量语法(literal syntax)”

    1. 要用:
      NSNumber* intNumber = @5;
      NSNumber* floatNumber = @5.2f;
      NSNumber* doubleNumber = @5.27413;
      NSNumber* expressionNumber = @(x*y);

      不要用:
      NSNumber* someNumber = [NSNumber numberWithInt:5];
    2. 要用:
      NSArray* animals = @[@"hamster", @"dog", @"cat"];
      NSString* hamster = animals[0];
      
      NSMutableArray* mutableArray = [@[@"hamster", @"dog", @"cat"]mutableCopy];
      mutableArray[0] = @"hamster";

      不要用:

      NSArray* animals = [NSArray arrayWithObjects:@"hamster",@"cat",@"dog", nil];
      NSString* hamster = [animals objectAtIndex:0];

       

    3. 要用:
      NSDictionary* animalData = 
         @{@"name" : @"Tom",
           @"age" : @2};
      
      NSString* name = animalData[@"name"];
      animalData[@"name"] = @"Jerry";

       

    第4条:定义常量少用#define

     1. 只在这个类内部使用

    在.m文件中:(写在@implementaion之前)

    static const double kSomeNumberConstant = 5.274;
    static NSString* const kSomeStringConstant = @"hamster";

    加字母k作为前缀。

    2. 可能在类之外使用

    在.h文件中:(写在@interface之前)

    extern NSString* const HAMMyClassSomeStringConstant;

    在.m文件中:(写在@implementation之前)

    NSString* const HAMMyClassSomeStringConstant = @"hamster";

    加类名作为前缀。

    第5条:使用枚举类型

    1. 写法——单独使用

    定义:

    enum HAMAnimalState : NSInteger {
        HAMAnimalStateSleeping,
        HAMAnimalStateEating,
        HAMAnimalStateDoingNothing,
    };
    typedef enum HAMAnimalState HAMAnimalState;

    其中指定类型的 : NSInteger 可加可不加。加了的可以前向声明。

    使用:

    HAMAnimalState state = HAMAnimalStateSleeping;

    2. 写法——组合使用

    定义:

    enum HAMAnimalAbility {
        HAMAnimalAbilityNone               = 0,
        HAMAnimalAbilitySing               = 1 << 0,
        HAMAnimalAbilityDance              = 1 << 1,
        HAMAnimalAbilityTalk               = 1 << 2,
        HAMAnimalAbilityRun                = 1 << 3,               
    }
    typedef enum HAMAnimalAbility HAMAnimalAbility;

    使用:

    //ability to both sing and dance
    HAMAnimalAbility ability = HAMAnimalAbilitySing | HAMAnimalAbilityDance;
    if (ability & HAMAnimalAbilitySing){
        //has ability to sing
    }

    3. 适合使用枚举类型的场合

    1. 某个对象的各种状态,如StateDisconnected, StateConnecting, StateConnected
    2. 表示选项(可能多选),如PermittedDirectionUp, PermittedDirectionDown, PermittedDirectionLeft
    3. 状态码
    4. 样式,如某个UI元素的不同样式

    4. switch枚举类型时,不要加default:分支

  • 相关阅读:
    浅涉OPC Client
    枚举目标机器已注册的OPC服务器
    C++ DCOM服务器和C#客户端互操作完全解释
    COMException:没有注册类别(REGDB_E_CLASSNOTREG)
    网络化广播主机ZABKZ/AXT8182
    OPC 技术文档之 IOPCBrowseServerAddressSpace 的使用
    SQL Server 2008 r2 服务无法启动
    Infinova V2040 系列 大型矩阵切换/控制系统
    COM中GUID和UUID、CLSID、IID
    django 视图与网址
  • 原文地址:https://www.cnblogs.com/hamhog/p/3575599.html
Copyright © 2011-2022 走看看