Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 什么';动态和合成的区别是什么?_Iphone_Objective C_Cocoa_Cocoa Touch - Fatal编程技术网

Iphone 什么';动态和合成的区别是什么?

Iphone 什么';动态和合成的区别是什么?,iphone,objective-c,cocoa,cocoa-touch,Iphone,Objective C,Cocoa,Cocoa Touch,从我读到的文档中,@dynamic在运行时创建访问器方法,而@synthesis将在构建时创建访问器 让我猜猜:@dynamic节省了一些内存,而代码在内存页中保持较小?还是怎样它们之间还有什么区别 可以说:“使用@dynamic而不是@synthesis总是一个好主意吗?”?我是说。。。如果这真的节省了内存,为什么不呢 但是我想@dynamic比@synthesis有一些缺点,否则每个人都会使用@dynamic。那么缺点是什么呢?否。动态属性不会自动生成@dynamic属性标记向编译器指示您将

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

让我猜猜:@dynamic节省了一些内存,而代码在内存页中保持较小?还是怎样它们之间还有什么区别

可以说:“使用@dynamic而不是@synthesis总是一个好主意吗?”?我是说。。。如果这真的节省了内存,为什么不呢


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

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

发件人:

@dynamic

您可以使用
@dynamic
关键字告诉编译器,您将通过直接提供方法实现或在运行时使用其他机制(如代码的动态加载或动态方法解析)来履行属性隐含的API契约


否,
@dynamic
表示将在运行时提供实现
@synthesis
告诉编译器为您创建实现。您可以将
@dynamic
与核心数据一起使用,核心数据在运行时生成属性实现。如果您不使用这两种方法,编译器将假定您将提供实现。

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