在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、OC特性
二、在类头文件中尽量少引入其他头文件
三、多用字面量语法,即简写语法
NSNumber *intNum = @1; NSNumber *floatNum = @2.5f; NSNumber *doubleNum = @3.14159; NSNumber *boolNum = @YES; NSNumber *charNum = @'a’;
更加简便的语法: int x = 5; float y = 6.32f; NSNumber *expressionNum = @(x * y);
1>数组
2>字典实例
取值
可变数组和字典
小小限制:除了字符串以外,所创建出来的对象必须属于Foundation框架才行; 如果自定义了这些子类,则无法用字面量语法创建其对象。
以上都是不可变的,需要可变 则需要复制一份 NSMutableArray *mutable = [@[@1, @2, @3, @4, @5]mutableCopy]; 要点:
4.多用类型常量,少用#define预处理指令 少用:#define ANIMATION_DURATION 0.3 最好用: // 变量一定要同时用static 与 const 来声明。只在.m使用 // MEView.h // MEView.m static const NSTimeInterval MEAnimationDuration1 = 0.3;
// 需要对外公布使用 例子1: // MEView.h extern const NSTimeInterval MEAnimationDuration; // MEView.m const NSTimeInterval MEAnimationDuration = 0.3;
例子2: // MEView.h extern NSString *const MEStringConstant; // MEView.m
要点:
5.用枚举表示状态、选项、状态码
由于OC 基于C语言, 所以C语言有的功能它都有。 枚举 只是一种常量命名方式。 某个对象所经历的各种状态就可以定义为一个简单的枚举集。如: socket connetion
第一种情况:使用系统分配的序号 enum MEConnetionState { MEConnetionStateDisconnected, MEConnetionStateConnecting, MEConnetionStateConnected, }
由于每种状态都用一个便于理解的值来表示,所以这样写出来的代码更易读懂。编译器会为枚举分配一个独有的编号,从0开始,每个枚举递增1.
第二种情况:可以不使用编译器所分配的序号,而是手工指定某个枚举成员变量所对应的值 enum MEConnetionState { MEConnetionStateDisconnected = 1, MEConnetionStateConnecting, MEConnetionStateConnected, }
第三种情况:使用枚举类型,就是定义选项时。若这些选项可以彼此组合,则更应如此 enum UIViewAutoresizing { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 << 0, UIViewAutoresizingFlexibleWidth = 1 << 1, UIViewAutoresizingFlexibleRightMargin = 1 << 2, UIViewAutoresizingFlexibleTopMargin = 1 << 3, UIViewAutoresizingFlexibleHeight = 1 << 4, UIViewAutoresizingFlexibleBottomMargin = 1 << 5, } *只要枚举定义得对,各选项之间就可通过 “按位或操作符”来组合。 *使用上述方式来定义枚举值即可保证,每个选项均可启用或禁用。 *系统库中频繁使用这个方法。 - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationLandscapeLeft;
}
系统写法(新式语法): typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 << 0, UIViewAutoresizingFlexibleWidth = 1 << 1, UIViewAutoresizingFlexibleRightMargin = 1 << 2, UIViewAutoresizingFlexibleTopMargin = 1 << 3, UIViewAutoresizingFlexibleHeight = 1 << 4, UIViewAutoresizingFlexibleBottomMargin = 1 << 5 };
支持新特性,用NS_ENUM 定义:
typedef enum : NSUInteger { MEConnetionStateDisconnected, MEConnetionStateConnecting, MEConnetionStateConnected,
} MEConnetionState;
在switch语句里枚举的用法: *凡是需要以按位或操作来组合的枚举都应使用NS_OPTIONS定义。若是枚举不需要互相组合,则应使用NS_ENUM 来定义
typedef NS_ENUM(NSInteger, MEConnetionState) { MEConnetionStateDisconnected, MEConnetionStateConnecting, MEConnetionStateConnected,
};
switch (_currentState) { MEConnetionStateDisconnected: break; MEConnetionStateConnecting: break; MEConnetionStateConnected: break;
}
注意:若使用枚举来定义状态机,则最好不要有default分支。
要点:
版权所有--kiss小锦(原创) |
请发表评论