繁体   English   中英

创建一个客观的c全局类

[英]Creating an objective c global class

我确定我在这里只是遗漏了一些简单的东西,但是虽然我在这里查看了其他示例,但我找不到答案,我的代码似乎是一样的。 我正在尝试使用一些方法定义一个全局类,我可以从项目中的其他类访问这些方法。 我可以定义它,但不能从我的其他类访问方法,虽然我总是将全局类头导入到我想要使用该方法的类。 下面是代码:1st Global class def:

#import <Foundation/Foundation.h>

@interface GlobalMethods : NSObject {}

- (unsigned long long)getMilliSeconds:(NSDate*)d;

- (NSDate *)getDateFromMs:(unsigned long long)ms;

@end

#import "GlobalMethods.h"

@implementation GlobalMethods

//SET DATE TO MILLISECONDS 1970 EPOCH

- (unsigned long long)getMilliSeconds:(NSDate*)d
{
    unsigned long long seconds = [d timeIntervalSince1970];

    unsigned long long milliSeconds = seconds * 1000;


    return milliSeconds;
}

// GET DATE FROM MILLISECONDS 1970 EPOCH

- (NSDate *)getDateFromMs:(unsigned long long)ms
{
    unsigned long long seconds = ms / 1000;
    NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970: seconds];

    return date;
}


@end

and then where I want to use my methods in another class:

#import "GlobalMethods.h"


// GET MILLISECONDS FROM 1970 FROM THE PICKER DATE
    NSDate *myDate = _requestDatePicker.date;

    milliSeconds = [self getMilliSeconds: myDate];

错误是:viewcontroller没有可见的接口声明了选择器getMilliSeconds。

感谢您的帮助。

您正在尝试在视图控制器类的实例上调用getMilliSeconds:方法(这是GlobalMethods类的实例方法)。 这是错误的原因。

如上所述,您需要更改此行:

milliSeconds = [self getMilliSeconds: myDate];

至:

GlobalMethods *global = [[GlobalMethods alloc] init];
milliSeconds = [global getMilliSeconds:myDate];

更好的解决方案是首先将GlobalMethods类的所有实例方法更改为类方法。 换句话说,在GlobalMethods的.h和.m文件中,将两个方法的前导-更改为+

然后在视图控制器中,您可以:

milliSeconds = [GlobalMethods getMilliSeconds:myDate];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM