2012-02-20 35 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 +辅助,应该给你实施的想法。

相关问题