我有一些自定义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 +辅助,应该给你实施的想法。
聂