我有一些自定義UIViewControllers在我的應用程序需要知道返回的NSDate字符串。我可以在這些類之間複製和粘貼相同的代碼,但這顯然是很糟糕的做法。將它作爲一個方法放在一個類中可能也不好,然後讓另一個類添加這個類來利用它的方法。這似乎是一個混亂的事情要做。那麼你會推薦我做什麼?當我的應用程序需要助手類時,我該如何保持我的代碼組織?
爲了澄清 - 我需要一個給定NSDate並返回一個字符串的方法,用於其他幾個類。
我有一些自定義UIViewControllers在我的應用程序需要知道返回的NSDate字符串。我可以在這些類之間複製和粘貼相同的代碼,但這顯然是很糟糕的做法。將它作爲一個方法放在一個類中可能也不好,然後讓另一個類添加這個類來利用它的方法。這似乎是一個混亂的事情要做。那麼你會推薦我做什麼?當我的應用程序需要助手類時,我該如何保持我的代碼組織?
爲了澄清 - 我需要一個給定NSDate並返回一個字符串的方法,用於其他幾個類。
聽起來像是你要麼需要一個功能,而不是一個方法:
//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或2個方法NSObject的子類在執行時不會有絲毫差異
我會考慮在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」 在你想使用的任何文件。
我建議你添加方法到產品類別,然後添加標題,您的項目PCH文件
#ifdef __OBJC__
#import "yourHeader.h"
#endif
如果谷歌的NSDate +輔助,應該給你實施的想法。
聶