2014-11-04 52 views
0

我想重構我的代碼,使用POST請求到一個URL,解析JSON和做了很多有用的東西。不幸的是我需要在多個視圖控制器中多次使用它。什麼是最好的方法來做到這一點?如何在iOS中創建全局方法?

我發現了一個變量的工作解決方案(每個VC使用的全局變量)。 .m文件看起來像:

#import "DataClass.h" 

@implementation DataClass 
@synthesize str; 
@synthesize credits; 
@synthesize points; 
@synthesize globalName; 
@synthesize questionsCount; 
@synthesize wrongQuestionsCount; 
@synthesize correctQuestionsCount; 

static DataClass *instance = nil; 

+(DataClass *)getInstance 
{ 
    @synchronized(self) 
    { 
     if(instance==nil) 
     { 
      instance= [DataClass new]; 
     } 
    } 
    return instance; 
} 

而每一次我調用使用getInstance方法使用一個數據類對象/修改的變量。 該方法現在獲取少量NSString參數,並返回一個NSString。

因此,我的問題是..我可以使用相同的類來使我的callPostURL方法全局和可用於我的應用程序中的每個VC? 我應該使用DataClass還是有更好的解決方案?

+0

這對於使用單例類來處理模型層及其相關任務是絕對正常的 - 我不會推薦使用@ David的答案中顯示的解決方案,這對於這種情況來說相當麻煩。 – holex 2014-11-04 10:53:50

+0

是的。甚至看着評論(知道這是不對的)我試着用它,它給了我兩個我最喜歡的(LINK O MATCHER)erros,我無法修復...所以我會等待一個更好的解決方案。 – xdevx 2014-11-04 11:11:36

回答

-1

您可以使用內聯靜態方法使其在任何地方都可用。

例如,在你的AppDelegate.h中創建一個這樣的函數,你可以在任何地方使用它。

static inline BOOL myTestMethod(NSString *aString, NSInteger anInteger) { 
    ... 
} 

然後在您的實現,你怎麼稱呼它是這樣的:BOOL rep = myTestMethod(@"foo", 1);
不要忘記#IMPORT你的頭在你想使用的功能的文件。

+6

默認情況下,在Xcode 6中刪除了pch文件,出於很好的理由,您不應該將全局函數或屬性放在這裏 - 不要將其用作垃圾抽屜,因爲它的不好的做法並且難以維護以及極大地減慢你的編譯時間 – 2014-11-04 10:39:57

+0

編輯我的答案 – 2014-11-04 10:41:00