Here is my code.
- (void)viewDidLoad{
[super viewDidLoad];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 240, 280)];
[view setTag:101];
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 220, 260)];
[view setBackgroundColor:[UIColor redColor]];
[view addSubview:imgView];
[self.view addSubview:view];
[self getimageFromView:view];
[view release];
[imgView release];
[self getimageFromView];
}
-(void)getimageFromView:(UIView *)view{
for (UIView *view123 in [view subviews]) {
if ([view123 isKindOfClass:[UIImageView class]]) {
UIImageView *imgView = (UIImageView *)view123;
imgView.image = [UIImage imageNamed:@"img.png"];
NSLog(@"retain cnt 1 = %d",[imgView retainCount]);
}
}
}
-(void)getimageFromView{
for (UIView *view in [self.view subviews]) {
if (view.tag == 101) {
for (UIView *view123 in [view subviews]) {
if ([view123 isKindOfClass:[UIImageView class]]) {
UIImageView *imgView = (UIImageView *)view123;
imgView.image = [UIImage imageNamed:@"img.png"];
NSLog(@"retain cnt 2 = %d",[imgView retainCount]);
}
}
}
}
}
nslog look like following
retain cnt 1 = 3
retain cnt 2 = 2
Now my questions
1) Why UIImageView's object retain count is displayed like this ?
2) Is that correct count ?
3) If yes how can i send the release message till it become 0 ?
4) Can I do like this ? Is this proper way ?
for(int i=0;i<[imgView retainCount];i++){
[imageView release];
}
I have number of views like this and have to do operation on UIImageView as displayed. Also I am getting memory warning and my app getting crash.