[英]How to dynamically allocate array of pointers to objects in Objective-C?
我正在嘗試提高應用程序的性能,並且希望將當前使用的NSMutableArray更改為動態分配的C數組。
作為測試,我創建了此類:
在我的班級界面中,我有:
MyObject *myObjectArray;
在我的實現中,對象初始化之后,我還有另一種方法來設置數組:
-(void) createObjectsWithNumberOfObjects:(int)numberOfObjects
{
MyObject *tempObject = nil;
myObjectArray = (MyObject*) malloc(numberOfObjects * sizeof(tempObject));
for( int i = 0; i < numberOfObjects; i++ )
tempObject = [[MyObject alloc] init];
myObjectArray[i] = (MyObject*) tempObject; // error
}
}
我收到以下錯誤消息:分配中的類型不兼容
那我在做什么錯?
是否可以使用像這樣動態分配的對象數組?
另外,在我的dealloc方法中,我將其設置為在每個對象上調用release,然后釋放(myObjectArray)
您需要更多*
s。 將數組指針聲明為:
MyObject **myObjectArray;
然后像這樣初始化它:
myObjectArray = (MyObject**) malloc(numberOfObjects * sizeof(MyObject *));
將您代碼中的所有其他內容保留為現在,您應該一切都好! 為什么要從NSMutableArray
更改? 在靈活性和可可支持方面,它比C陣列要強大得多。
您確定要提高性能嗎? NSMutableArray已有很長時間了,就為新元素分配更多的內存而言,NSMutableArray可能會比您現在更聰明。
現在,如果您正在創建一個鏈表或其他內容,則可以為中間插入之類的東西帶來好處……但是對於可以添加到其中的純數組,我不確定會看到多少收益。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.