Cette réponse ne résout pas vraiment votre problème, elle explique simplement pourquoi votre approche n'a pas fonctionné.
En C, vous ne pouvez pas retourner les types de tableau à partir des fonctions. C'est simplement une limitation de la langue (intentionnelle ou non intentionnelle je ne sais pas). Par extension, en Objective-C vous ne pouvez pas retourner les types de tableau à partir des méthodes. Cela signifie également que vous ne pouvez pas utiliser les types de tableau en tant que propriétés, car le compilateur est incapable de synthesize
une méthode qui renvoie un type de tableau.
Les tableaux sont automatiquement convertis en types de pointeurs lorsqu'ils sont utilisés dans une expression, vous pouvez donc suivre les conseils de @ Graham et utiliser des pointeurs à la place. L'inconvénient de cette approche est que vous devez savoir exactement combien d'éléments sont dans le tableau afin de ne pas lire accidentellement la fin de l'it. Si le nombre d'éléments est fixe et connu au moment de la compilation, c'est probablement le chemin à parcourir (si vous voulez éviter NSArray
pour une raison quelconque).
Il est difficile de répondre pourquoi memset
n'a pas réussi à compiler sans voir réellement comment vous l'avez utilisé, mais en général cela est la façon dont il peut être utilisé:
MyStruct someStructs[10];
memset(someStructs, 0, sizeof someStructs);
Alternativement, il est possible de revenir struct des fonctions/méthodes, même si elles contiennent des tableaux. Théoriquement, vous pouvez créer une structure contenant un tableau de MyStruct
et utiliser ce nouveau type de structure comme type de propriété. En pratique, ce n'est pas une bonne idée car cela ajoute simplement une couche de complexité.
Vous pouvez également lire/écrire après la fin d'un tableau de syntaxe de tableau. Ce qui suit est légal, bien que brisé, C: int x [2] = {0}; x [27] = 3; –