Objective-C ARC e passando C matrizes de objetos

Me desculpe se isso é um pouco de uma pergunta C-noob: eu sei que preciso analisar meus indicadores. Infelizmente, estou dentro de um prazo, por isso não tenho tempo para ler um capítulo inteiro do livro, por isso espero um conselho um pouco mais direcionado.

Desejo armazenar alguns objetos C objetivos em uma matriz C. Estou usando o ARC. Se estivesse no Mac, poderia usar o NSPointerArray, mas estou no iOS e isso não está disponível.

Estarei armazenando uma matriz C tridimensional: conceitualmente, minhas dimensões são dia, altura e cacheNumber. Cada elemento será um ponteiro para um objeto objetivo-C ou NULL.

O número de caches (ou seja, o tamanho da dimensão cacheNumber) é conhecido no momento da compilação, mas os outros dois não são conhecidos. Além disso, a matriz pode ser muito grande, por isso preciso alocar memória dinamicamente para el

om relação à semântica de propriedade, preciso de fortes referências aos objeto

Gostaria que toda a matriz tridimensional fosse uma variável de instância em um objeto de objetivo

Eu pretendo ter um método que seja- tableForCacheNumber:(int)num days:(int*)days height:(int*)height. Esse método deve retornar uma matriz bidimensional, que é um número de cache específico. (Ele também retorna por referência o tamanho da matriz que está retornando.)

Minhas perguntas

Que ordem devo colocar minhas dimensões para que eu possa retornar facilmente um ponteiro para a sub-matriz para um número de cache específico? (Acho que deveria ser o primeiro, mas não sou 100%.)

Qual deve ser o tipo de retorno do meu método, para que o ARC não reclame? Não me importo se a matriz retornada tiver uma contagem de referência aumentada ou não, desde que eu saiba o que está fazend

Que tipo deve ser minha variável de instância que contém a matriz tridimensional? Eu acho que deveria ser apenas um ponteiro, pois esse ivar representa apenas o ponteiro para o primeiro item que está na minha matriz. Corrigir? Em caso afirmativo, como especifico isso?

Quando crio a matriz tridimensional (para o meu ivar), acho que faço algo comocalloc(X * Y * Z, sizeof(id)) e converter o resultado para o tipo do meu ivar?

Ao acessar itens da matriz tridimensional no ivar, acredito que preciso desreferenciar o ponteiro a cada vez, com algo como(*myArray)[4][7][2]. Corrigir

A matriz bidimensional que eu retornar do método será acessada de maneira semelhant

Preciso marcar o array bidimensional retornado comobjc_returns_inner_pointer?

Lamento mais uma vez que esta seja uma pergunta ruim do Stack Overflow (é muito longa e com muitas partes). Espero que os cidadãos da SO me perdoem. Para melhorar meu carma entre redes, talvez eu o escreva como uma postagem de blog quando este projeto for lançad

questionAnswers(6)

yourAnswerToTheQuestion