模型的封装方法:(放到代码仓库中)
1.在.h文件中添加与plist文件key值对应的属性名
Array --- > NSArray
Dictionary --- > NSDictionary
string ---> NSString
number ---> NSNumber
注意:属性名和plist中key值一定要一致
2..h文件文件中属性的strong weak copy assign的使用
1> strong : 用于一般的对象或自定义的对象类型
2> weak : 用于UI控件和delegate
3> copy : 用于NSString block对象
4> assign : 用于基本数据类型
3.在.h中添加可以传入字典参数的构造方法
- (instancetype)initWithDict:(NSDictionary*)dict;
+ (instancetype)xxxWithDict:(NSDictionary*)dict;
4.在.m文件中实现对应的构造方法
// 在initWithDict:方法中用KVC一句代码搞定所有属性
5.instancetype和id的区别
1> 相同点:都可以作为方法的返回值类型
2> 不同点:instancetype编译器会检测出真是类型,id可以用在参数类型上
KVC -键值编码,是一种间接修改/读取对象属性的一种方法
1.使用注意事项:
1> plist中的键值名称必须与模型中的属性一致
2> 模型中的属性可以不完全出现在plist中,但是如果plist文件中的属性不完全出现在属性中就会出错。
xib文件用来描述一块局部的UI界面
在开发阶段面向开发者是xib文件,装到手机xib文件就会转化为nib文件
1.xib文件的加载方法
1> 方法1:创建所有的xib对象,并且将对象按顺序放到objs数组中
NSArray * objs = [[NSBundle mainBundle] loadNibNamed:@"appView" owner:nil options:nil];
2> 方法2
UINib *nib = [UINib nibWithNibName:@"appView" bundle:[NSBundle mainBundle]];
NSArray* objs = [nib instantiateWithOwner:nil options:nil];
2.xib封装成view的过程
1> 新建一个集成字UIView的自定义view,假设类名叫做(WBAppView)
2> 新建一个WBAppView.xib文件来描述WBAppView内部结构
3> 修改xib的类型为WBAppView的真实类型
4> 将内部子控件跟WBAppView进行属性连线
5> WBAppView提供一个模型属性
6> 重写模型属性的set方法,因为在set方法中可以拿到外界传递的模型数据
7> 把模型数据拆开,分别设置数据到对应的子控件中
8> 补充:提供一个创建WBAppView的类方法,将读取的xib文件代码屏蔽起来
- (NSArray *)apps
{
if (_apps == nil) {
// 1.获得plist的全路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];
// 2.加载数组
NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];
// 3.将dictArray里面的所有字典转成模型对象,放到新的数组中
NSMutableArray *appArray = [NSMutableArray array];
for (NSDictionary *dict in dictArray) {
// 3.1.创建模型对象
MJApp *app = [MJApp appWithDict:dict];
// 3.2.添加模型对象到数组中
[appArray addObject:app];
}
// 4.赋值
_apps = appArray;
}
return _apps;
}
补充:不能与控件进行交互
1> alpha <= 0.01
2> hidden = YES
3> userInteraction = NO(父控件的userInteraction = NO)
4> 位置超过了所在父控件的尺寸
// 父视图不能交互,子视图也不能交互方法的命名规范:
命名法则:
1> 单词首字母小写,后面的单词的首字母大写
2> initWithxxx: init 初始化函数With单词必须大写,因为OC默认的就是"驼峰法",默认初始化函数就是init单词开头的,如果是initwithxxx就是认为是initwith单词开头的,造成找不到初始化方法
3> 方法,属性不能以new作为名称的开头
“`
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/wangbo_neuq/article/details/48081215