当我的应用程序需要帮助程序类时,如何保持我的代码组织?

时间:2012-02-20 19:11:09

标签: iphone objective-c ipad

我的应用程序中有一些自定义UIViewControllers需要知道NSDate返回的字符串。我可以在这些类之间复制和粘贴相同的代码,但这显然是非常糟糕的做法。把它作为一个方法放在一个类中也可能不好,然后让另一个类添加这个类来利用它的方法。这似乎是一件混乱的事情。那么你会推荐我做什么?

澄清 - 我需要一个给出NSDate并返回一个字符串的方法,以便在其他几个类中使用。

4 个答案:

答案 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子类在执行中不会产生丝毫差异