[英]When writing a category, should i use self or the category name
編寫NSString類別/擴展名時,是否使用
return [self stringWithFormat:units[i], value/10.0];
要么
return [NSString stringWithFormat:units[i], value/10.0];
使用self
有優勢self
或者這是那些用戶偏好設置之一
(我假設所討論的擴展方法是一個類方法。似乎有些混亂導致投票失敗;這是一個很好的問題。)
通常,您應在此處使用self
。 這樣,如果子類重寫了該方法,則將使用該方法的子類版本。 子類可以覆蓋類方法,就像它們可以覆蓋實例方法一樣。
就是說, NSString
是一種有趣的情況,因為它是一個類集群,因此其任何隱藏的子類都重寫此類方法將是非常令人驚訝的(並且自己對它進行子類化充其量是棘手的)。 因此在實踐中,對於NSString
,幾乎可以肯定沒有關系。 但是通常,您有正確的直覺:除非明確不希望使用子類的實現,否則請使用self
。
有一個大例外: +initialize
。 您需要對所上的課程非常謹慎,因為這可能會被多次調用。 如果您要覆蓋+initialize
,請參閱其文檔以了解如何正確實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.