zoukankan      html  css  js  c++  java
  • @dynamic与@synthesize的差别

    如今非常多时候我们都已经不再使用@synthesizekeyword了,可是须要了解当中的原理:

    一、@dynamic与@synthesize的差别
    @property有两个相应的词。一个是@synthesize,一个是@dynamic。假设@synthesize和@dynamic都没写。那么默认的就是@syntheszie var = _var;

    @synthesize的语义是假设你没有手动实现setter方法和getter方法,那么编译器会自己主动为你加上这两个方法。

    @dynamic告诉编译器,属性的setter与getter方法由用户自己实现,不自己主动生成。(当然对于readonly的属性仅仅需提供getter就可以)。

    假如一个属性被声明为@dynamic var,然后你没有提供@setter方法和@getter方法,编译的时候没问题,可是当程序执行到instance.var =someVar,因为缺setter方法会导致程序崩溃;或者当执行到 someVar = var时,因为缺getter方法相同会导致崩溃。编译时没问题,执行时才执行对应的方法,这就是所谓的动态绑定。

    如今我们不再使用@synthesize,所以假设我们没实用这个keyword@dynamic修饰属性的时候,我们默认是实现了getter和setter方法。

    所以我们在数据库中用到core Data的时候。我们须要属性和表中的记录的gukeyword段进行相应,这个时候,我们将会须要开发人员管理绑定,还须要开发人员实现相应的属性的setter和getter方法。

  • 相关阅读:
    第二次作业
    java第一次上机练习
    java第一次作业
    第四周上机作业
    第三周作业
    第一次上机作业
    第一次作业
    3.19第三周上机作业
    第一周课下作业
    2020.3.23 java第三次作业
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7088518.html
Copyright © 2011-2022 走看看