如果您想在某個方法中使用代碼(objective-c)來縮減爲單個調用(爲了簡潔或易讀),那麼首選方法是什麼?凝結代碼的最佳做法?
- 不這樣做,請保留方法中的所有相關代碼。
- 爲所討論的對象添加一個新方法,即 - (NSString *)formatedTime;
- C型功能,定義在有問題的對象之外。
- 其他即我錯過了。
如果您想在某個方法中使用代碼(objective-c)來縮減爲單個調用(爲了簡潔或易讀),那麼首選方法是什麼?凝結代碼的最佳做法?
重寫代碼時,我的主要規則是始終確保我寫的內容儘可能可讀。考慮到這一點,那麼,我一般:
另一件我要說的是,如果您將代碼分解爲其他輔助方法,則應該在類擴展中聲明這些方法,而不是類的主標頭。下面是一個例子.m文件:
@interface MyClass()
- (CGRect)makeRect;
- (NSString*)formatStringFromInput:(NSString*)input;
@end
@implementation MyClass
//Implementation here
@end
這類似於johnw188 hint,但去得遠一點:
在一類擴展你不僅可以擁有私有方法,但私有財產了。
@interface MyClass()
@property(retain) MyOtherClass *aNotherObject; //declared in .h. Should be @private
- (CGRect)makeRect;
- (NSString*)formatStringFromInput:(NSString*)input;
@end
@implementation MyClass
@synthesize aNotherObject;
//Implementation here
-(void)dealloc
{
self.aNotherObject = nil;
[super dealloc];
}
@end
好處很明顯:你得到了@ property/@合成的威力,但只能在類對象中使用它。私人財產只能通過self
訪問。
謝謝蒂姆,很好的回答,在過去,我已經按照你的說法去做了,並且用明智的命名方法去清理了很容易被封裝的代碼段。我只是想確保我在最佳實踐和其他人的期望方面做了正確的事情。非常感激。 – fuzzygoat 2010-12-16 20:28:22