Передача UIImage в функцию и внешнее редактирование - PullRequest
1 голос
/ 15 апреля 2011

Допустим, у нас есть эта часть кода для подкласса UIView:

self.myImage = [UIImage imageNamed:@"img1.jpg"];

[self myFunc:self.myImage];

Здесь определено myFunc:

-(void)myFunc(UIImage*)img{
    UIImageView *imgView = [[UIImageView alloc]initWithImage:img];
    [self addSubview:imgView];
}

Теперь я показываю в своем представлении img1.jpg, если я решу изменить self.myImage ПОСЛЕ вызова myFunc

self.myImage = [UIImage imageNamed:@"img2.jpg"];

почему я продолжаю показывать img1, а не img2 ??? myFunc получает указатель UIImage, а не объект ... Я в замешательстве, и я пропустил что-то действительно важное, я думаю.

Редактировать -

Я хотел бы иметь много UIImageView, и каждое изображение ivar этого вида должно указывать на один и тот же адрес изображения, меняя изображение по этому адресу, каждый UIImageView имеет новое изображение, как я могу это сделать? enter image description here

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Учитывая ваш код.Предположим, что когда вы загружаете img1.jpg в память, он идет по адресу 1000. И вы используете ivar myImage, чтобы указать на него.Когда вы передаете этот ivar своей функции и создаете UIImageView, он также указывает на img1.jpg.

Теперь, когда вы загружаете img2.jpg в память, он переходит на другой адрес, например 2000. А затем обновляет ivar myImage, чтобы он указывал на это новое местоположение.img1.jpg по-прежнему находится по адресу 1000 и все еще используется UIImageView.

Если вы хотите изменить изображение UIImageView, вам нужно будет использовать свойство image этого класса.

1 голос
/ 15 апреля 2011

UIImage, который вы передали UIImageView, фактически не знает самого представления, которому он принадлежит. Может использоваться в разных видах. Вы должны запросить объект UIImageView для текущего изображения, которое он отображает. Если вы хотите изменить отображаемое изображение, вы должны написать:

self.imgView.image = [UIImage imageNamed:@"img2.jpg"];

Лучше добавить свойство для UIImageView, чтобы вы могли получить к нему доступ из любого места в классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...