ios基础知识--06
2016-06-06 13:13
357 查看
[b]零散基础知识:[/b]
1.只要被static修饰的局部变量,只会初始化一次,在整个程序运行过程中,只有一份内存;
2.oc语法细节:不允许直接修改oc对象的结构体属性的成员,所有可以通过CGMake(),或先把属性支赋给一个值,然后通过改变赋给的那个值,在把那个值赋给属性值;
3.UIScrollView:
1). shouView.clipsToBounds = YES;超出的部分隐藏
2). scrollView:如果想禁止某个方向的滚动,那么就可以直接设置width=0或height = 0;
3). 如果遇到UIScrollView无法滚动的解决办法:
1>.没有设置contentSize;
2>.scrollEnabled = NO;
3>.没有接受到触摸事件userInteractionEnable= NO;
4.所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业
1). 模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性
2). 使用模型访问属性时,编译器会提供一系列的提示,提高编码效率
app.name= @"Jack";
NSString*name = app.name;
3). 字典转模型的过程最好封装在模型内部
4). 模型应该提供一个可以传入字典参数的构造方法
-(instancetype)initWithDict:(NSDictionary*)dict;
+(instancetype)xxxWithDict:(NSDictionary*)dict;
5. instancetype在类型表示上,跟id一样,可以表示任何对象类型;
instancetype只能用在返回值类型上,不能像id一样用在参数类型上;
instancetype比id多一个好处:编译器会检测instancetype的真实类型;
//...//
加载xib文件:
方式1:
NSArray *objs = [[NSBoundle mainBundle]loadNibNamed:@”test” owner:nil options:nil];
[self.view addSubview:objs[1]];
方式2:
一个对象就代表一个 文件:
UINib *nib = [UINib nibWithNibName:@”test”bundle:[NSBundle mainBundle]];
一般情况下,bundle参数nil,默认就是
UINib *nib = [UINib nibWithNibName:@”test”bundle:nil];
NSArray *objs = [nibinstantiateWithOwner:nil options:nil];
[self.view addSubview:[objs lastObject]];
注意:u通过xib\storyboard创建
-初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法
-初始化完毕后会调用awakeFromNib方法
设置监听事件常用的3种方式:
1>通过addTarget方式,但是这种方式只能监听一些"单击事件"、"滚动条滚动事件"等,有些事件通过addTarget方式监听无效,比如"Value
Changed"事件。
注意: addtarget 代理有个条件:必须继承UIControl
2>通过代理,
文本框的代理协议"UITextFieldDelegate"。演示:textFieldShouldBeginEditing方法。
1.只要被static修饰的局部变量,只会初始化一次,在整个程序运行过程中,只有一份内存;
2.oc语法细节:不允许直接修改oc对象的结构体属性的成员,所有可以通过CGMake(),或先把属性支赋给一个值,然后通过改变赋给的那个值,在把那个值赋给属性值;
3.UIScrollView:
1). shouView.clipsToBounds = YES;超出的部分隐藏
2). scrollView:如果想禁止某个方向的滚动,那么就可以直接设置width=0或height = 0;
3). 如果遇到UIScrollView无法滚动的解决办法:
1>.没有设置contentSize;
2>.scrollEnabled = NO;
3>.没有接受到触摸事件userInteractionEnable= NO;
4.所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业
1). 模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性
2). 使用模型访问属性时,编译器会提供一系列的提示,提高编码效率
app.name= @"Jack";
NSString*name = app.name;
3). 字典转模型的过程最好封装在模型内部
4). 模型应该提供一个可以传入字典参数的构造方法
-(instancetype)initWithDict:(NSDictionary*)dict;
+(instancetype)xxxWithDict:(NSDictionary*)dict;
5. instancetype在类型表示上,跟id一样,可以表示任何对象类型;
instancetype只能用在返回值类型上,不能像id一样用在参数类型上;
instancetype比id多一个好处:编译器会检测instancetype的真实类型;
//...//
加载xib文件:
方式1:
NSArray *objs = [[NSBoundle mainBundle]loadNibNamed:@”test” owner:nil options:nil];
[self.view addSubview:objs[1]];
方式2:
一个对象就代表一个 文件:
UINib *nib = [UINib nibWithNibName:@”test”bundle:[NSBundle mainBundle]];
一般情况下,bundle参数nil,默认就是
UINib *nib = [UINib nibWithNibName:@”test”bundle:nil];
NSArray *objs = [nibinstantiateWithOwner:nil options:nil];
[self.view addSubview:[objs lastObject]];
注意:u通过xib\storyboard创建
-初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法
-初始化完毕后会调用awakeFromNib方法
设置监听事件常用的3种方式:
1>通过addTarget方式,但是这种方式只能监听一些"单击事件"、"滚动条滚动事件"等,有些事件通过addTarget方式监听无效,比如"Value
Changed"事件。
注意: addtarget 代理有个条件:必须继承UIControl
2>通过代理,
文本框的代理协议"UITextFieldDelegate"。演示:textFieldShouldBeginEditing方法。
/** 演示代码: // 为某个文本框设置代理 - (void)viewDidLoad { [super viewDidLoad]; // 设置文本框代理为当前控制器。 self.txtLoginId.delegate = self; } // 让当前控制器遵守UITextFieldDelegate协议, 并且实现- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField方法, 返回YES - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { return YES; } */
相关文章推荐
- iOS开发多线程篇—线程间的通信
- iOS开发多线程篇—线程安全
- iOS开发多线程篇—创建线程
- iOS开发多线程篇—多线程简单介绍
- iOS RTMP 视频直播开发笔记(1)----- 采集摄像头图像
- ios开发笔记之十一 --viewDidload的方法的基本介绍用代码设置按钮的属性
- iostat
- iOS9 3D touch 适配开发
- iOS 开发session验证的问题
- iOS之__block、__strong和__weak使用
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- Xcode 7 制作静态库.a 文件
- iOS开发之drawRect的作用和调用机制
- iOS学习之多点触碰
- iOS 获取手机 唯一标识-b
- 华硕笔记本电脑BIOS设置fancystart后黑屏
- iOS 代码命名规范 及Android 代码命名规范(2)Android
- iOS NSString+Helper
- iOS 第三方框架-SVProgressHUD的简单介绍
- 苹果开发 笔记(61)recursiveDescription 方法