关于iphone:@dynamic和@synthesize之间的区别是什么?

What's are the differences between @dynamic and @synthesize?

从我读到的文档来看,@dynamic在运行时创建访问器方法,而@synthesis将在构建时创建访问器。

那么让我猜猜:@dynamic节省了一些内存,代码在内存页中保持较小的空间?或者什么?它们之间还有什么区别呢?

可以说:"使用@dynamic而不是@synthesis始终是个好主意吗?"我的意思是…如果这真的节省了记忆,为什么不呢?

但是我想@dynamic比@synthesis有一些缺点,否则每个人都会使用@dynamic。那么缺点是什么呢?


不。动态属性不会自动生成。@dynamic属性标记向编译器指示您将以某种方式提供访问器和设置器:

来自Objective-C编程语言指南:

@dynamic

You use the @dynamic keyword to tell the compiler that you will fulfill the API contract implied by a property either by providing method implementations directly or at runtime using other mechanisms such as dynamic loading of code or dynamic method resolution.


不,@dynamic说这些实现将在运行时提供。@synthesize告诉编译器为您创建实现。您可以将@dynamic与核心数据一起使用,例如,核心数据在运行时生成属性实现。如果您也不使用,编译器假定您将提供实现。


不,@dynamic不会给您带来任何内存/代码大小优势