这个问题出于好奇,对于我自己的娱乐而不是它是否是个好主意,而是来自大多数C#/ JavaScript背景,不断地看到它Objective-C的在我看来是一种丑陋:Objective-C中使用C宏alloc-init
MyClass* myObj = [[MyClass alloc] init];
...我很好奇,如果有可能定义一个C风格的宏这样,这可以变成这样:
MyClass* myObj = new MyClass;
...或者语法上类似的东西。
有没有人做过或看过它做过?随意评论为什么这可能是一个可怕的想法(除了明显的是非标准和陌生的),但这不会阻止我想知道它是否可以完成。如果你需要做没有我觉得你的运气了括号
#define new(x) [[x alloc] init]
MyClass *myObj = new(MyClass);
:;)
你可能有兴趣知道NSObject也[实现](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#// apple_ref/occ/clm/NSObject/new)'+ new',所以你可以做'MyClass * myObj = [MyClass new];'。它不像alloc/init那样常见,但它非常有效。编辑:卡尔正在更新他的答案与这个信息,因为我正在写这个评论... – 2013-03-02 00:43:42
这里有一篇关于在Obj-C中使用C宏(以及这样做的危险)的好文章:http://weblog.highorderbit .com/post/11656225202 /适当使用c-macros-for-objective-c-developers – devios1 2013-03-04 21:21:07