2012-02-20 31 views
0

我有一些自定義UIViewControllers在我的應用程序需要知道返回的NSDate字符串。我可以在這些類之間複製和粘貼相同的代碼,但這顯然是很糟糕的做法。將它作爲一個方法放在一個類中可能也不好,然後讓另一個類添加這個類來利用它的方法。這似乎是一個混亂的事情要做。那麼你會推薦我做什麼?當我的應用程序需要助手類時,我該如何保持我的代碼組織?

爲了澄清 - 我需要一個給定NSDate並返回一個字符串的方法,用於其他幾個類。

回答

2

聽起來像是你要麼需要一個功能,而不是一個方法:

//Helpers.h 

#import <Foundation/Foundation.h> 

NSString * makeAStringFromThisDateSomehow(NSDate * d); 

//Helpers.m 

#import "Helpers.h" 

NSString * makeAStringFromThisDateSomehow(NSDate * d) 
{ 
    // Body 
    // of 
    // your 
    // function 
} 

還是要做出NSDate類別做你需要的東西:

//NSDate+AndrewsCategory.h 

#import <Foundation/Foundation.h> 

@interface NSDate(AndrewsCategory) 
- (NSString *)Andrew_MakeAStringSomehow; 
@end 

//NSDate+AndrewsCategory.m 
#import "NSDate+AndrewsCategory.h" 

@implementation NSDate(AndrewsCategory) 
- (NSString *)Andrew_MakeAStringSomehow { 
    // Body 
    // of 
    // your 
    // method 
} 

@end 

請注意方法名稱上的愚蠢前綴。保持方法名不與框架類中的其他方法名相沖突,這一點非常重要。通常你會使用首字母縮寫:你的公司,你的或項目的。

在這兩種情況下,只需要在需要使用該函數或方法的地方導入相關頭文件,並且應該是hunky-dory。

-1

這是可能很好把它放在1類作爲一個方法,然後有另一個類添加這個類來利用它的方法。 簡單的1或2個方法NSObject的子類在執行時不會有絲毫差異

1

我會考慮在NSDate上寫一個類別。類別使您可以使用其他方法擴展現有類的功能,而不必混淆現有類的實現。因此,您可以將添加到NSDate,並且在將來只需撥打[yourDate yourMethod]即可。

要在Xcode中做到這一點,正好碰到⌘N創建一個新的文件,並選擇Objective-C的類別,然後給它一些名字,並使其在NSDate的一個類別。

然後設置你的頭:

@interface NSDate (YourCategory) 

- (NSString *) yourMethod; 

@end 

以及實現:

@implementation NSDate (YourCategory) 

- (NSString *) yourMethod { 
    return [NSString stringWithFormat:@"yourMethod on this date: ", [self description]]; // for example 
} 

@end 

然後就包括 「的NSDate + YourCategory.h」 在你想使用的任何文件。

0

我建議你添加方法到產品類別,然後添加標題,您的項目PCH文件

#ifdef __OBJC__ 

#import "yourHeader.h" 

#endif 

如果谷歌的NSDate +輔助,應該給你實施的想法。

相關問題