Objective-C/Cocoa:如何为readonly属性设置值?

Geo*_*rge 3 cocoa properties objective-c

我发现定义了一些对象,以便以某种方式由外部对象设置readonly属性.例如,在:

// skview is an instance of SKView
// skscene is an instance of SKScene
[skview presentScene:skscene]
Run Code Online (Sandbox Code Playgroud)

skscene的'view'属性是readonly,设置为skview.

如果属性skview.view是readonly,这怎么可能?如何在自定义对象中实现此行为?

谢谢!

Wai*_*ain 14

如果您在您的.h文件并将其设置为声明属性readonly,你可以在.m文件(在延续类别)为重新声明它readwrite,这样你就可以直接编辑值.

但这只是干净的做事方式.你也可以使用KVC来更多地关注它,并且只是调用setValue:forKey:哪个绕过你可能已经完成的任何好的东西来指定你想要公开的东西.

请查看此信息,了解KVC将如何处理您的请求.

然后,如果您真的绝望,可以使用Obj-C运行时直接访问底层实例变量.