簡體   English   中英

如何在Objective-C中動態分配指向對象的指針數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM