写这篇博客的目的是为了把平时一些琐碎的知识点总结一些,不然也容易忘记。
1.数组中内容去重复
//普通做法
if (![FeedConnArray containsObject:_ConnField.text]) {
[FeedConnArray addObject:_ConnField.text];
}
//牛逼做法 一行代码去掉数组中重复的内容
self.dataList = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];
2.NS_REQUIRES_SUPER 用法
在我们定义函数是,希望子类override时必须要调用子类方法是,可以在头文件中定义函数是添加**NS_REQUIRES_SUPER **属性,添加后如果子类不调用super 编译器会报错。
/** 初始化 */
- (void)prepare NS_REQUIRES_SUPER;
/** 摆放子控件frame */
- (void)placeSubviews NS_REQUIRES_SUPER;
/** 当scrollView的contentOffset发生改变的时候调用 */
- (void)scrollViewContentOffsetDidChange:(NSDictionary *)change NS_REQUIRES_SUPER;
3.Masonry使用技巧
Masonry 使用时都是很多属性都是相对于父控件而言,所以有时候可以节省很多书写代码。下面讲一个最基本的技巧
//创建个UIView
UIView * tempview = [UIView new];
tempview.backgroundColor = [UIColor redColor];
[self.view addSubview:tempview];
//最基础用法,同时制定上下左右的和和需要对齐的控件的位置
[tempview mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view).offset(20);
make.right.equalTo(self.view).offset(-20);
make.top.equalTo(self.view).offset(20);
make.bottom.equalTo(self.view).offset(-20);
}];
//按照上一步可以简化一些代码,父控件部分可以省略
[tempview mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(20);
make.right.offset(-20);
make.top.offset(20);
make.bottom.offset(-20);
}];
//将上下左右简化为一步
[tempview mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view).insets(UIEdgeInsetsMake(20, 20, 50, 50));
}];
//可以去掉父控件的代码
[tempview mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(UIEdgeInsetsMake(50, 50, 50, 50));
}];
tips:使用Masonry时一定要注意使用前要制定父控件,如果不指定,百分之百崩溃。