2011-03-30 5 views
0

로컬 변수의 텍스트 세트가있는 UITextView가 있습니다. 그 이후 가능 :UITextView setEnabled : 보유 개수가 증가합니까?

[textView setEnabled:NO]; 

보유 수는 1 씩 증가합니까?

편집 :

은 "문제"가 문제가있는 경우, 작은 뷰의 생성자에 : 지금

- (id)initWithData:(NSMutableArray *) { 
    UITextView *myText; 
    if ((self = [super init])) { 
    myText = [[UITextView alloc] initWithFrame:aRect]; 
    // retain count = 1; 
    [myText setEnabled:NO]; // retain count 2 
    [self addSubview:myText]; // retain count 3 
    [myText release]; // retain count 2 
    } 
} 

, 나는 "오토 릴리즈"한을 텍스트보기 ,하지만 메모리가 잘 관리되어 있는지 확실하지 않습니다. 게시물이 question와 관련되어 있습니다.

+0

일반적으로 보유 개수는 오해의 소지가 있으므로 걱정할 필요가 없습니다. 코드 스 니펫에서 일어날 수있는 일은 내부 구성 요소가 [[myText retain] autorelease] 또는 그 작업의 일부로 비슷한 것을 호출한다는 것입니다. –

답변

4

가능합니까? 전혀.

관심을 갖습니까? 별로 요. 서브 클래스에서 setEnabled:을 오버라이드하고 retain 호출을 작성한 사용자가 아니면

그렇다면 프레임 워크의 구현 세부 사항입니다.


절대 개수가 아니라 델타 수로 간주하십시오. 절대 값은 의미가 없습니다. 따라서 :

- (id)initWithData:(NSMutableArray *) { 
    UITextView *myText; 
    if ((self = [super init])) { 
    myText = [[UITextView alloc] initWithFrame:aRect]; // rc +1 
    [myText setEnabled:NO]; // rc change irrelevant 
    [self addSubview:myText]; // rc change irrelevant 
    [myText release]; // rc -1 
    } 
} 

그렇기 때문에 메모리를 올바르게 관리 할 수 ​​있습니다. 로컬 변수 myText의 범위 끝에 모든 보유가 릴리스별로 균형을 유지했습니다.

addSubview:의 경우 해당 메서드가 개체를 유지하는지 또는 복사본을 만들지 여부는이 범위의 메모리 관리와 관련이없는 구현 세부 사항입니다. 분명히, 하위 뷰는 참조를 유지하고 그것이 목적을 위해 필요하다는 것을 유지하지만, 이는이 메소드의 메모리 관리 범위를 벗어나는 구현 세부 사항입니다!

+0

질문에 수정 사항을 추가했습니다. – IssamTP

+0

고마워요. 지금은 분명해. 어쨌든 나는 그 문제를 해결했다. – IssamTP