1、语法糖
UIImageView *img = [[UIImageView alloc]init];
self.imageView = img;
与下面比较
self.imageView = ({
UIImageView *img = [[UIImageView alloc]init];
img;
});
第二种这样看起来结构更清晰 第一种如果代码太多时间长的话 会忘记之前的逻辑关系 第二种很明确的体现了这种逻辑关系
下面案例
NSArray *arr = [NSArray arrayWithObjects:@"",@"", nil];
arr[0];
还可以快速存数据 只要是oc对象类型都可以
@[@"",@"",@""]; 字符串存储
@[arr,arr1,arr2]; 对象存储
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"",@"", nil];
dic[@""];
@{@"key":@"value", .........};存储字符串
@{@"key":arr, ..........} 存储对象
字典不能给存储自定义类型 如果要存储自定义类型 需要重写 hash方法
isEqual方法 以及copyWithZone方法 根据情况可选
我们可以通过这种方式快速的拿到数据 和存储数据 我们经常用但是却有很多人不知道这种是什么 其实这就是语法糖 语法糖顾名思义就是为了让程序员使用起来方便快捷 看起来清晰易懂
2、多利用枚举对象
枚举应用场景很多 最直观的体现就是进行 区分
比如一个控制器展示三个View 通过不同的跳转在一个控制器可以展示不同的View ,利用枚举进行标记 就可以简单实用这种方法
两种定义枚举的方式
typedef enum : NSUInteger {
aa = 0,//枚举
bb = 1,
cc = 2
} 枚举名称;
typedef NS_ENUM(NSUInteger, 枚举名称) {
a = 0,//枚举
b = 1,
c = 2
};
3、能用OC类型 就少用#define
第一 define会替换所有重名的数据
第二 difine没有类型声明
第三 OC类型 有类型声明 明了
4、extern static const 修饰
extern 表示一个链接 也就是说用extern修饰的类型 在全局任何位置都可以访问到 不用担心找不到值 比如做一个全局标记 例子可以参考 UICollectionView 中注册页眉页脚的标记 UICollectionElementKindSectionHeader,UICollectionElementKindSectionFooter
static 表示在当前类全局访问变量 并且在程序运行期间不会被销毁 内存分配为 全局区(静态区) 用来保存值最好
const 修饰的类型 表示不可以被修改 如果修改则会有错误提示 用来使用不可以被修改的值最方便
5、分段控制器控制多个view的展示
整体的思路就是 :
1、给主控制器加入多个子控制器
2、初始化一个UIViewController 用来存放子控制器
3、根据点击的坐标来取出对应的子控制器 并且展示在View上
网友评论