2011-03-30 40 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]或類似的工作。 – 2011-03-31 18:27:30

回答

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 2011-03-31 07:31:32

+0

非常感謝。現在更清楚了。無論如何,我解決了這個問題。 – IssamTP 2011-04-01 18:47:17