好的,这是一个奇怪的!
这是代码:
@synthesize imageViewX,myScrollViewX;
- (void)viewDidLoad {
imageViewX = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
imageViewX.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
imageViewX.contentMode = UIViewContentModeScaleAspectFit;
imageViewX.backgroundColor = [UIColor clearColor];
//self.view = imageView;
myScrollViewX.contentSize = CGSizeMake(imageViewX.frame.size.width, imageViewX.frame.size.height);
myScrollViewX.backgroundColor = [UIColor blackColor];
myScrollViewX.maximumZoomScale = 4.0;
myScrollViewX.minimumZoomScale = 1.0;
myScrollViewX.clipsToBounds = YES;
myScrollViewX.delegate = self;
CGPoint scrollCenter = [myScrollViewX center];
[imageViewX setCenter:CGPointMake(scrollCenter.x,
scrollCenter.y )];
[myScrollViewX addSubview:imageViewX];
self.view = myScrollViewX;
[myScrollViewX autorelease];
}
- (void)viewWillAppear:(BOOL)animated {
imageViewX.image = [stm.image valueForKey:@"image"];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return imageViewX;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (void)dealloc {
[super dealloc];
[imageViewX release];
[xray release];
}
@end
情况如下: 深入查看tableview应用程序。 选择行。 使用tableheaderview进入带有tableview的View1。 tableheaderview有两个按钮。 button1将您带到上面描述的代码的视图。 button2带您进入具有完全相似代码的视图!
如果我调用第一个按钮1并返回到View1并返回初始视图NO LEAKS 如果我选择另一行,请转到View1并选择button1并返回初始视图NO LEAKS 第3次幸运!!做同上面的GOT LEAKS !!!
WHY ????
Senario 2选择行转到View1选择button1转到上面的代码查看,返回, 选择按钮2去查看具有上面的确切代码GOT LEAKS !!! 让我疯狂!!!!
HELP ???
答案 0 :(得分:0)
你在这里犯了一个重大罪恶:覆盖view
viewDidLoad
财产
允许您设置视图控制器的view
属性的唯一位置是loadView
。默认实现将检查与视图控制器类同名的nib,如果找不到nib,则创建一个简单的白色视图。您可以覆盖它以创建自己的视图。 不要在其中调用[super loadView]
。
请确保您只在loadView
中创建了一个视图,并在viewDidLoad
中创建了其他子视图。
此外,您可能会发现[UIScreen mainScreen].applicationFrame
对于在自定义loadView
实施中设置框架非常有用。