ios基础知识--06

来源:互联网 发布:淘宝转让qc41 编辑:程序博客网 时间:2024/06/07 16:24

零散基础知识:

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一样用在参数类型上;

     instancetypeid多一个好处:编译器会检测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;             }                          */


0 0
原创粉丝点击