• 个人理解


    1.

    代理的设置 :

    一般是创建一个界面,想要实现和另一个界面的交互传值

      本界面的事件的处理交给代理,让代理去响应

    2.

    当使用MVC时

        1.协议代理的定义写在View.h中

        2.所以当创建界面时就应该指定代理要实现哪些方法,这部分写在view.m中,对事件的相应方法中如button点击

    - (void)btnClick:(UIButton *)button

    if (self.delegate && [self.delegate respondsToSelector:@selector(协议方法)]) {

            [self.delegate (协议方法):(本界面需要传递的参数或对象)];

        }

      3.代理的对象都是controller,在controller中初始化view对象后,指定view的代理是本控制器,再把响应的实现都写在contorller中

    view.delegate=self;

         4.而以后当使用到网络传值时就需要在view中写用数据model初始化函数,过程如下:

    controller中获取数据封装成model

    初始化view.init

    指定代理 

    调用view.createUI(model)初始化界面

    3.block

     函数回调 当block执行时就会回到这里,哪里调用,最后就回到哪里

    就是去其他地方获取一些东西,再带回来

    block在创建的时候,它的内存是分配在栈(stack)上,而不是在堆(heap)上。

    他本身的作于域是属于创建时候的作用域,一旦在创建时候的作用域外面调用block将导致程序崩溃

    创建完block的时候需要调用copy的方法。copy会把block从栈上移动到堆上,那么就可以在其他地方使用这个block了

    _block = ^(){     NSLog(@"number %d", number); };  _block = [_block copy];

    block的释放又需要等self的dealloc中才会释放

    _ _block标记的变量是不会被自动retain的。

    _ _block ViewController *controller = self;

    _block = ^()

         NSLog(@"string %@", controller->_string); 

    };

    (  void  (^)   (void)   )finishBlock    

    第一个void表示此block无返回值。

    (^)为block type的标志。

    第二个(void)表示这个block无参数。

    finishBlock就是他的名字。

    无参数无返回类型的匿名函数就是我们的最简单的block了!

    没有返回值,没有参数,就相当于只有内部的可执行代码!

    4.

    点语法和KVC有以下几点共同点:

    • 都属于拼写技术

    • 都适用于(也只适用于)访问属性

    • 两者都会使用.作为语法组成的一部分

    不同点:

    • KVC是一种机制,影响到应用的对象设计模式以及其他Objective-C的使用

    • 点语法只是存取方法的一种快捷形式,是一种语法

    • 使用KVC访问属性时,可能会会调用属性的存取方法,也可能会直接访问属性的实例变量

    • 使用点语法就是在使用属性的存取方法

    • KVC可以使用多个点来表示一个键路径,如[myInstance setValue:@2 forKeyPath:@"linkedInstance.integerProperty"];

    • 点语法使用多个点来连环调用存取方法,如myInstance.linkedInstance.integerProperty = 2;

  • 相关阅读:
    Nginx 配置对流量、连接和请求的限制
    linux iptables规则介绍
    Javascript 语言精粹 代码片段合集
    Wowza® Media Systems 使用配置手册。
    如何去除My97 DatePicker控件上右键弹出官网的链接
    [转载]jQuery诞生记-原理与机制
    java swing JButton文字显示异常
    c# 内存拷贝 解决json序列化丢失私有数据(二进制序列化反序列化)
    c# Marshal 将字节数组转为结构 封装协议
    c# 串口通信及模拟串口进行调试
  • 原文地址:https://www.cnblogs.com/guaishushu/p/4979081.html
Copyright © 2020-2023  润新知