Iphone UITextView setEnabled:是否导致保留计数增加?

Iphone UITextView setEnabled:是否导致保留计数增加?,iphone,objective-c,cocoa-touch,ios4,retaincount,Iphone,Objective C,Cocoa Touch,Ios4,Retaincount,我有一个UITextView,它的文本集来自一个局部变量。在此之后是否可能: [textView setEnabled:NO]; 保留计数增加1 编辑: “问题”,如果是问题,则在小视图的构造函数中: - (id)initWithData:(NSMutableArray *) { UITextView *myText; if ( ( self = [super init] ) ) { myText = [[UITextView alloc] initWithFrame:aRec

我有一个UITextView,它的文本集来自一个局部变量。在此之后是否可能:

[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
  }
}
现在,我已经“自动删除”了文本视图,但我不确定内存是否管理良好(帖子与此相关)。

可能吗?当然

你在乎吗?一点也不。除非您在子类中重写了
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
局部变量范围的末尾,所有保留已通过发布进行平衡

当您
添加子视图:
时,该方法是保留对象还是复制对象是一个实现细节,与此范围内的内存管理无关。显然,子视图维护一个引用并保留它是出于其目的所必需的,但这是一个超出此方法内存管理范围的实现细节

可能吗?当然

你在乎吗?一点也不。除非您在子类中重写了
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
局部变量范围的末尾,所有保留已通过发布进行平衡


当您
添加子视图:
时,该方法是保留对象还是复制对象是一个实现细节,与此范围内的内存管理无关。显然,子视图维护一个引用并保留它是出于其目的所必需的,但这是一个超出此方法内存管理范围的实现细节

通常,保留计数是误导性的,你不应该担心它们。在您的代码片段中,可能发生的情况是某些内部组件正在调用
[[myText retain]autorelease]
或类似的操作作为其工作的一部分。通常,retain计数具有误导性,您不必担心它们。在您的代码片段中,可能发生的情况是,某些内部组件正在调用
[[myText retain]autorelease]
或类似的东西作为其工作的一部分。