У меня есть UIScrollView в моем UIViewController , определенном как это в моем файле .h:
#import <UIKit/UIKit.h>
@interface TestViewController : UIViewController <UIScrollViewDelegate>
@property (nonatomic, retain) UIScrollView * imageScrollView;
@end
Затем в моем файле .m у меня есть следующее:
@synthesize imageScrollView = _imageScrollView;
Я прочитал, что это автоматически создаст _imageScrollView, который я обычно печатаю в файле .h?(UIScrollView * _imageScrollView)
Мне это нравится, потому что он удаляет дублирующийся код из моих .h файлов.Теперь в моем loadView я делаю все остальное:
self.imageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 480.0 - 20.0 - 49.0)];
[_imageScrollView setDelegate:self];
[_imageScrollView setPagingEnabled:YES];
[_imageScrollView setBounces:NO];
[_imageScrollView setShowsHorizontalScrollIndicator:NO];
[_imageScrollView setShowsVerticalScrollIndicator:NO];
[_imageScrollView setContentSize:CGSizeMake(320.0 * 3.0, 480.0 - 20.0 - 49.0)];
И в выпуске dealloc и nil:
- (void)dealloc
{
[_imageScrollView release], _imageScrollView = nil;
[super dealloc];
}
Теперь послеbuild Xcode говорит мне это:
Potential leak of an object allocated on line #linenumber
Это пройдет, когда я изменю это:
self.imageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 480.0 - 20.0 - 49.0)];
на это:
self.imageScrollView = [[[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 480.0 - 20.0 - 49.0)] autorelease];
Зачем мне это нужно?автоматически выпустить это, когда я выпущу его в dealloc?Что я делаю не так?
Это предупреждение о памяти появляется только в Xcode на моем iMac с установленным Lion, а не на моем macbook со снежным барсом ...