我在NSObject和CALayer中测试@dynamic,当DynamicTest类继承NSObject时,运行
test.title = @“标题”;
它崩溃了,因为DynamicTest类中没有setter / getter方法。
@interface DynamicTest : NSObject
@property NSString *title;
@end
@implementation DynamicTest
@dynamic title;
@end
DynamicTest *test = [[DynamicTest alloc] init];
test.title = @"title";//crashed
但是当DynamicTest类继承CALayer时,它可以工作!,
@interface DynamicTest : CALayer
@property NSString *title;
@end
@implementation DynamicTest
@dynamic title;
@end
DynamicTest *test = [[DynamicTest alloc] init];
test.title = @"title";//it works!
我知道CALayer为此做了些事情,我想知道细节,期待您的帮助,谢谢!
答案 0 :(得分:2)
阅读Core Animation Programming Guide: Key-Value Coding Extensions:
list-group
和<div class="list-group list-group-horizontal justify-content-center"> .... .... </div>
类是符合键值编码的容器类,这意味着您可以为任意键设置值。即使键CAAnimation
不是CALayer
类的声明属性,您仍然可以如下设置其值:someKey
尽管未明确说明,但此支持扩展到提供动态访问器。