创建 objective c 全局 class
Creating an objective c global class
我确定我只是在这里遗漏了一些简单的东西,但是虽然我在这里查看了其他示例,但找不到答案,我的代码似乎是一样的。
我正在尝试使用我可以从项目中的其他 classes 访问的一些方法来定义全局 class。我可以定义它,但无法从我的其他 classes 访问方法,尽管我总是将全局 class header 导入到我想使用的 class方法。继承人的代码:
1st 全球 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。
感谢您对此的帮助。
您正在尝试在视图控制器 class 的实例上调用 getMilliSeconds:
方法(这是 GlobalMethods
class 的实例方法)。这就是错误的原因。
如上所写,您需要更改此行:
milliSeconds = [self getMilliSeconds: myDate];
至:
GlobalMethods *global = [[GlobalMethods alloc] init];
milliSeconds = [global getMilliSeconds:myDate];
更好的解决方案是首先将 GlobalMethods
class 的所有实例方法更改为 class 方法。换句话说,在 GlobalMethods
的 .h 和 .m 文件中,将两种方法的前导 -
更改为 +
。
然后在你的视图控制器中你可以做:
milliSeconds = [GlobalMethods getMilliSeconds:myDate];
我确定我只是在这里遗漏了一些简单的东西,但是虽然我在这里查看了其他示例,但找不到答案,我的代码似乎是一样的。 我正在尝试使用我可以从项目中的其他 classes 访问的一些方法来定义全局 class。我可以定义它,但无法从我的其他 classes 访问方法,尽管我总是将全局 class header 导入到我想使用的 class方法。继承人的代码: 1st 全球 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。
感谢您对此的帮助。
您正在尝试在视图控制器 class 的实例上调用 getMilliSeconds:
方法(这是 GlobalMethods
class 的实例方法)。这就是错误的原因。
如上所写,您需要更改此行:
milliSeconds = [self getMilliSeconds: myDate];
至:
GlobalMethods *global = [[GlobalMethods alloc] init];
milliSeconds = [global getMilliSeconds:myDate];
更好的解决方案是首先将 GlobalMethods
class 的所有实例方法更改为 class 方法。换句话说,在 GlobalMethods
的 .h 和 .m 文件中,将两种方法的前导 -
更改为 +
。
然后在你的视图控制器中你可以做:
milliSeconds = [GlobalMethods getMilliSeconds:myDate];