@synthesize表示如果属性没有手动实现setter和getter方法,编译器会自动加上这两个方法。

@dynamic告诉编译器:属性的setter和getter方法由用户自己实现,不自动生成。假如一个属性被声明为@dynamic var,而且你没有提供@setter方法和@getter方法,编译的时候没有问题,但是当程序运行到调用setter或者getter方法时因为找不到自定义的对的方法,程序就会崩溃。编译时没有问题,运行时才执行相应的方法,这就是所谓的动态绑定。