我會如何重構的ARC驗證碼:重構此代碼爲ARC遵守
- (UIGestureRecognizer *)createTapRecognizerWithSelector:(SEL)selector {
return [[[UITapGestureRecognizer alloc] initWithTarget:self action:selector] autorelease];
}
感謝您的幫助
我會如何重構的ARC驗證碼:重構此代碼爲ARC遵守
- (UIGestureRecognizer *)createTapRecognizerWithSelector:(SEL)selector {
return [[[UITapGestureRecognizer alloc] initWithTarget:self action:selector] autorelease];
}
感謝您的幫助
刪除自動釋放語句,並重新命名方法:
- (UIGestureRecognizer *)newTapRecognizerWithSelector:(SEL)selector
{
return [[UITapGestureRecognizer alloc] initWithTarget:self action:selector];
}
任何想法爲什麼我會得到錯誤消息「使用未聲明的聲明的標識符'UITapRecognizer'?再次感謝 – hanumanDev 2012-04-02 14:32:44
更改名稱以* new *開頭*隱式地將方法從[returns unretained]中更改(http://clang.llvm .org/docs/AutomaticReferenceCounting.html#objects.operands.other-returns)to [returned retained](http://clang.llvm.org/docs/AutomaticReferenceCounting.html#objects.operands.retained-returns)。雖然'create'確實會返回一個自動釋放的對象,但是對於ARC重構的'new'方法會返回一個對調用者的擁有引用,但是它與原始方法有所不同,但它與原始方法有所不同 – Caleb 2012-04-02 14:32:47
@Caleb,我認爲這更準確地表達了代碼的行爲,繼續使用'create'將繼續暗示自動釋放的對象正在返回,在ARC下,這不再是explici這樣的情況。 – isaac 2012-04-02 14:56:15
刪除autorelease
。這應該這樣做
希望這可以幫助你。
據我所知,ARC接管了所有參考問題的控制權。所以你可以刪除你的autorelease消息(並保留,釋放,dealloc)。還是我誤解你的意圖? – TRD 2012-04-02 14:10:51