Этот ответ на самом деле не решает вашу проблему, он просто объясняет, почему ваш подход не работает.
В C вы не можете возвращать типы массивов из функций.Это просто ограничение языка (преднамеренное или непреднамеренное, я не знаю).В Objective-C вы не можете возвращать типы массивов из методов.Это также означает, что вы не можете использовать типы массивов в качестве свойств, поскольку компилятор не может synthesize
метод, который возвращает тип массива.
Массивы C автоматически преобразуются в типы указателей при использовании в выражении, так что вы можете следовать совету @ Грэма и вместо этого использовать указатели.Недостатком этого подхода является то, что вы должны точно знать, сколько элементов в массиве, чтобы вы случайно не прочитали его конец.Если количество элементов фиксировано и известно во время компиляции, это, вероятно, путь (если вы хотите избежать NSArray
по любой причине).
Трудно ответить, почему не удалось memset
для компиляции, фактически не видя, как вы ее использовали, но, вообще говоря, вот как это можно использовать:
MyStruct someStructs[10];
memset(someStructs, 0, sizeof someStructs);
В качестве альтернативы, можно возвращать структуры из функций / методов, даже если они содержат массивы.Теоретически, вы можете создать структуру, содержащую массив MyStruct
, и использовать этот новый тип структуры в качестве типа свойства.С практической точки зрения, это не очень хорошая идея, поскольку она просто добавляет уровень сложности.