我的应用程序中有一些自定义UIViewControllers需要知道NSDate返回的字符串。我可以在这些类之间复制和粘贴相同的代码,但这显然是非常糟糕的做法。把它作为一个方法放在一个类中也可能不好,然后让另一个类添加这个类来利用它的方法。这似乎是一件混乱的事情。那么你会推荐我做什么?
澄清 - 我需要一个给出NSDate并返回一个字符串的方法,以便在其他几个类中使用。
答案 0 :(得分: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)
我考虑在NSDate
上写一个类别。类别允许您使用其他方法扩展现有类的功能,而不必混淆类的现有实现。因此,您可以将yourMethod
添加到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
然后在您要使用yourMethod
的任何文件中添加“NSDate + YourCategory.h”。
答案 2 :(得分:0)
我建议将该方法添加到类别中,然后将标题添加到项目pch文件中
#ifdef __OBJC__
#import "yourHeader.h"
#endif
如果你谷歌的NSDate +帮助,应该让你知道实施。
的Nik
答案 3 :(得分:-1)
可能好将它作为方法放在1个类中,然后让另一个类添加此类以利用它的方法。 简单的1或2方法NSObject子类在执行中不会产生丝毫差异