iphone - 在 Objective-C 类别中使用静态变量

标签 iphone objective-c ios

我希望能够做到以下几点:

NSString *hoursAndMinutes = [myNSDateObject formattedTime]; // eg. 10:25

现在我可以在 NSDate 类上创建一个类别,但是由于 NSDateFormatter 的创建被证明是非常昂贵的,我想使用我的 NSDateFormatter。这是否与类别的概念相矛盾,或者是否有更简洁的方法来实现这一点?

最佳答案

类别只会让您维护静态变量。但是对于您的实例来说,这将完美地工作。

为你的格式化程序创建一个类别

标题

@interface NSDateFormatter (myFormats)

+ (NSDateFormatter*) specialFormatting;

@end

执行文件

@implementation NSDateFormatter (myFormats)

+ (NSDateFormatter*) specialFormatting{
    static NSDateFormatter *_specialFormatting;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _specialFormatting = [[NSDateFormatter alloc] init];
        // Continue Setting up this format;
    });
    return _specialFormatting;
}

@end

然后一定要在你想要使用它的地方包含你的标题(我使用 prefix.pch 文件来包含我一直使用的东西)

然后你就不需要声明它并且可以在它所在的地方使用它。并且不会在您每次需要时都创建该项目..

该对象永远不会被释放。但这就是你想要的。因为它仍然可以访问,所以它不是内存泄漏。

您还可以提供帮助程序方法,让您只取回字符串。

希望对您有所帮助。

关于iphone - 在 Objective-C 类别中使用静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11231844/

相关文章:

iphone - 递归地将 self.view 添加到 self.view 中?

iphone - 以编程方式在 UIView 上添加 UITextField

ios - 如何检查宏内的条件?

ios - swift 3 : Checking Internet (Reocurring) viewDidAppear not

ios - 我如何知道无法将 iPhone 应用程序提交到应用程序商店的原因?

iphone - 在 iPhone 上打开热点会导致我的应用程序屏幕向下移动

ios - Sharekit 试飞和 pod

ios - becomeFirstResponder() 不起作用

objective-c - 什么是 QTCaptureScreenInput?

objective-c - NSString 到 TimeInterval