簡體   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