Iphone 重构此代码以符合ARC要求

Iphone 重构此代码以符合ARC要求,iphone,objective-c,ios,Iphone,Objective C,Ios,我将如何为ARC重构此代码: - (UIGestureRecognizer *)createTapRecognizerWithSelector:(SEL)selector { return [[[UITapGestureRecognizer alloc] initWithTarget:self action:selector] autorelease]; } 感谢您的帮助删除autorelease语句并重命名该方法: - (UIGestureRecognizer *)newTapRec

我将如何为ARC重构此代码:

- (UIGestureRecognizer *)createTapRecognizerWithSelector:(SEL)selector {
    return [[[UITapGestureRecognizer alloc] initWithTarget:self action:selector] autorelease];
}

感谢您的帮助

删除autorelease语句并重命名该方法:

- (UIGestureRecognizer *)newTapRecognizerWithSelector:(SEL)selector
{
    return [[UITapGestureRecognizer alloc] initWithTarget:self action:selector];
}

删除autorelease语句并重命名该方法:

- (UIGestureRecognizer *)newTapRecognizerWithSelector:(SEL)selector
{
    return [[UITapGestureRecognizer alloc] initWithTarget:self action:selector];
}
移除自动释放。那应该可以

希望这对您有所帮助。

删除自动释放。那应该可以


希望这对您有所帮助。

据我所知,ARC将接管所有参考问题的控制权。因此,您可以删除您的自动释放消息,并保留、释放和解除锁定。还是我误解了你的意图?据我所知,ARC接管了所有参考问题的控制权。因此,您可以删除您的自动释放消息,并保留、释放和解除锁定。或者我误解了您的意图?知道为什么我会收到错误消息使用未声明的声明标识符“UITapRecognizer”吗?再次感谢您将名称更改为以new开头会隐式地将方法从更改为。这可能没问题,但它与原来的方法不同。@Caleb,的确-区别是显著的。尽管“create”确实返回了一个自动释放的对象,“new”方法为ARC重构,它向调用方返回一个自己的引用,ARC负责释放该引用。在我看来,这更准确地表达了代码的行为。继续使用“create”将意味着继续返回一个自动释放的对象,而在ARC下,情况已不再如此。@isaac使用ARC时,您不必担心返回的对象是否自动释放-ARC应该以任何方式处理它。我可能会调用方法-tapRecognizerWithSelector:,但在某种程度上,这只是个人偏好的问题。你知道为什么我会收到错误消息使用未声明的声明标识符“uitaRecognizer”?再次感谢您将名称更改为以new开头会隐式地将方法从更改为。这可能没问题,但它与原来的方法不同。@Caleb,的确-区别是显著的。尽管“create”确实返回了一个自动释放的对象,“new”方法为ARC重构,它向调用方返回一个自己的引用,ARC负责释放该引用。在我看来,这更准确地表达了代码的行为。继续使用“create”将意味着继续返回一个自动释放的对象,而在ARC下,情况已不再如此。@isaac使用ARC时,您不必担心返回的对象是否自动释放-ARC应该以任何方式处理它。我可能会将该方法称为-tapRecognizerWithSelector:,但在某种程度上,这只是个人偏好的问题。