Pergunta

Eu estou tentando adicionar várias instâncias do UIImageView (s) a um NSMutableArray de NSMutableDictionar (s).

Estou fazendo isso, para ser capaz de voltar atrás e retirar a referência UIImageView, para mudar a posição destas imagens.

Parece que, quando eu puxo a informação para fora do dicionário, que só retorna um ponteiro nulo ...

Todas as sugestões sobre como eu deveria implementar isso? Pode haver uma maneira método mais fácil de armazenar uma lista de n imagens e ser capaz de fazer referência a eles mais tarde ....

// (for i = 0 to 30)

UIImageView *newBall = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ball.png"]];
newBall.center = CGPointMake (arc4random() % 280 + 20, arc4random() % 440 + 20);
[self.view addSubview:newBall];

NSMutableDictionary *dictBall = [[[NSMutableDictionary alloc] init] autorelease];
[dictBall setValue:newBall forKey:@"imgBall"];

// the dictionary is then added to the array

[newBall release];

// end for loop

(estou usando um dicionário, porque eu também armazenar um dy / dx valor para taxa de mudança em movimento)

Foi útil?

Solução

código acima não parece OK para mim.

Você está criando um novo cada vez que NSMutableDictionary * dictBall através do laço. É algo que retê-lo depois existe o loop? não se parece com ele em seu código. Isto pode ser porque seu objeto é nulo.

Mover esta fora de linha / antes do loop for, e você deve ser fino.

Além disso, você tem certeza que deseja armazenar UIViewImage em um dicionário? Por que não apenas uma identificação (com base na tag) e as coordenadas (CGPoint ou CGRect)? Desta forma, você pode usar a tag para encontrar o UIImageView através da tag e movê-lo onde quer que você quer? Menos memória cara sábio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top