Objective c 目标C,指南识别器分配和发布
我是obj-c的新手,我只是想知道是否有人能解释一下。在这里,我们向当前视图添加一个UIGestureRecognitor,然后立即释放它,为什么?如果我们发布它,这不会使它在程序中无用吗Objective c 目标C,指南识别器分配和发布,objective-c,ios,xcode,Objective C,Ios,Xcode,我是obj-c的新手,我只是想知道是否有人能解释一下。在这里,我们向当前视图添加一个UIGestureRecognitor,然后立即释放它,为什么?如果我们发布它,这不会使它在程序中无用吗 recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; ((UIPanGestureRecognizer *)recognizer).minimumNumberOfTouc
recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
((UIPanGestureRecognizer *)recognizer).minimumNumberOfTouches = 3;
[self.view addGestureRecognizer:recognizer];
[recognizer release];
执行时:
[self.view addGestureRecognizer:recognizer];
手势识别器保留计数增加。因此,下面的release
只是平衡alloc/init操作,它返回一个retain count为1的对象
换言之,您可以用以下术语思考:
self.view
成为手势识别器的唯一所有者,因此您可以调用release
一次,以使事情恢复正常。解除分配self.view
时,它将在其手势识别器上调用release,这也将解除分配
如果不这样做,则会出现内存泄漏,因为当self.view被解除分配时,将在手势识别器上调用release
,但这不足以使保留计数降至零(因为alloc
隐含的初始retain
)
希望这能澄清一些事情 在iOS中,有一种称为(保留计数)的东西,这是一个内部计数器,用于跟踪对象或对象所使用的所有引用。。因此,每次对对象进行(alloc、copy、retain)操作时,它都会将其retain计数器增加1。。在这三种情况下,您负责(释放)对象,这将使计数器也减少1。。在您的情况下,您做出了正确的事情来释放对象,但它没有释放,因为当您将其添加到视图时,它的保留计数器增加了1,因此它仍在内存中,但您不负责删除它。iOS将为您执行此操作(自动释放)。希望这会有帮助。祝你好运。“乳房管理”?那是为了一切顺利吗?很抱歉,Objective-C一点也不允许你管理mammaries——你必须自己去做(为了记录在案,这个问题最初的标题是“Objective-C中的乳腺管理”。)