這個問題出於好奇,對於我自己的娛樂而不是它是否是個好主意,而是來自大多數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