2011-11-04 15 views
1

。我經常使用:如果我在OBJ-C中有一個返回對象的方法/函數,則在Objective C中設置匿名創建的對象的屬性C

return [[MyEventArgs alloc] init]; 

//同樣要設置MyEventArgs屬性Height爲100

如果我想在創造它在該對象上設置一些屬性。我怎麼做? 在C#中我可以這樣做:

return new MyEventArgs{Height = 100}; 

哪些是OBJ-C這樣的語法?

關於同一主題的另一個問題是,如果我可以像在C#中一樣在OBJ-C中動態創建對象和屬性?

例如,我可以做到這一點在C#(功能與鏈接/λ工作時,這是偉大的)

List<object> aList = new List<object>(); 
aList.Add(new { Height = 100 }); 

如何做到這一點的OBJ-C?

//提前致謝!

回答

1

Objective-C中沒有這樣的簡寫。你必須以某種方式命名變量來調用它的適當方法。

+0

以上兩個例子都不能在Obj-C中完成嗎?這很奇怪。我發現自己想要做很多事情。額外的語法真的讓我感到不快。不過謝謝你的答案! –

+0

你可以創建一些C宏,這將有所幫助。或者像C結構的第一個例子那樣有一個初始化簡寫,而不是完整的對象。 –

+0

這不是嚴格正確的,OP需要的是一個自定義的init方法,唯一不能做的就是決定要設置哪些屬性,但是你可以創建自定義的init方法(或者像Eugenes的方便方法回答) –

1

有沒有這種速記,但你,例如,可以建立一個像

+ (id)myObjectWithHeight:(CGFloat)height; 

自定義構造函數的構造函數代碼如下:

+ (id)myObjectWithHeight:(CGFloat)height { 
    MyObject *object = [[[MyObject alloc] init] autorelease]; 
    object.height = height; 
    return object; 
} 

而且使用它像

NSArray *array = [NSArray arrayWithObject:[MyObject myObjectWithHeight:100]]; 
+0

是的。當然,我可以做到這一點。或者定義一個自定義的init構造函數。但那不是我想要的。 –

相關問題