addSubview增量保留计数?

Tho*_*son 6 iphone release retaincount

我测试了它,看起来确实如此.所以我的问题是,它总是增加保留计数.

所以每次我做这样的事情:

UIView *theView = [[[UIView alloc] initWithFrame:(CGRect)aFrame] autorelease];
[self.view addSubview:theView];
Run Code Online (Sandbox Code Playgroud)

我实际上是在泄漏记忆吗?

我有一个全局属性@property (nonatomic, retain) UILabel *ingredientsTextLabel;,我viewDidLoad使用此代码实例化:

我只有名为的属性,在我的标题中没有属性,所以没有getter和setter.在我的viewDidLoad:

    ingredientsTextLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, ingredientsScrollView.frame.size.width, ingredientsScrollView.frame.size.height)];
    [ingredientsTextLabel setBackgroundColor:[UIColor clearColor]];
    [ingredientsTextLabel setFont:[UIFont fontWithName:@"Helvetica" size:18]];
    [ingredientsTextLabel setText:ingredientsText];
    [ingredientsTextLabel setNumberOfLines:0];
    [ingredientsTextLabel setLineBreakMode:UILineBreakModeWordWrap];
    NSLog(@"%i",[ingredientsTextLabel retainCount]); // here retain count is 1

    CGSize maxSize = CGSizeMake(ingredientsScrollView.frame.size.width, 9999);
    CGSize ingLabSize = [ingredientsText sizeWithFont:ingredientsTextLabel.font
                                    constrainedToSize:maxSize
                                        lineBreakMode:ingredientsTextLabel.lineBreakMode];

    [ingredientsTextLabel setFrame:CGRectMake(ingredientsTextLabel.frame.origin.x, ingredientsTextLabel.frame.origin.x, ingredientsTextLabel.frame.size.width, ingLabSize.height)];
    [ingredientsScrollView addSubview:ingredientsTextLabel];
    NSLog(@"%i",[ingredientsTextLabel retainCount]); // here retain count is 2!
Run Code Online (Sandbox Code Playgroud)

现在,我认为这会工作,然后在dealloc中我可以释放ingredientsTextLabel,但保留数为2,所以我需要也释放我后,我addSubview 以及?我没有意识到这种情况发生了!:(

Fel*_*lix 10

是的,"addSubview"会增加保留计数.这是有道理的,因为该方法存储了在超级视图也被释放之前不应该释放/释放的子视图.当superview发布时,它还会释放所有子视图.