虽然超载@开始踏上危险的领域,但我喜欢在Clang 3.1中添加新的Objective-C文字.不幸的是,新的文字对我来说用处有限.除了代码需要与AppKit接口的情况之外,我大多放弃使用Foundation类来支持我自己的自定义框架(出于各种原因;其中大部分是我需要直接控制所使用的内存分配模式按对象).
我总是可以使用一些运行时技巧来传递新创建的对象作为我的自定义类(并且我已经与字符串对象文字有关,因为只有非Apple GCC运行时支持该-fconstantstring=class标志),但这是一个黑客充其量并抛弃我通过替换等效的基础类开始获得的所有好处.
与字符串对象文字不同,新文字Clang实现实际上不是常量类(内存布局是硬编码的); 而是将适当的消息发送到它们各自的类,以在运行时创建和初始化新对象.效果与您自己创建对象的效果没有什么不同.理论上,它意味着使用的类和新文字调用的方法不是硬编码的.在实践中我找不到任何方法来改变它们以指向我自己的自定义类和方法(实际上我只是想指向一个自定义类;在运行时将虚拟方法指向实际方法并不困难).
当我第一次看到这个时,我真的希望找到一组可以用来做我要求的标志,但是由于我没有找到任何标志,我希望有人有解决方案.