2013-06-25 39 views
0

我曾經在appdelegate中聲明變量,並使其在所有類中共享(如果變量是全局變量)。Appdelegate故事板中的變量

appDelegate = (StoryAppDelegate*)[[UIApplication sharedApplication]delegate]; 

這是我通常使用的代碼來訪問appdelegate變量。現在我正在嘗試一個故事板應用程序,它不適合我。而聲明appdelegate它顯示錯誤「未知類型名稱StoryAppDelegate」。

StoryAppDelegate*ss; 

這是我正在使用的代碼。

任何幫助表示讚賞。

+0

'#進口 「StoryAppDelegate.h」'。和**使用空格。**您的代碼是**難看。** – 2013-06-25 09:27:40

回答

0

我會推薦使用你的全局變量的單例實例,因爲他們已經多次讓我脫離你的確切情況。這是我目前用來實現一個單例的一個例子。這種方法也是ARC-安全以及

mySingleton.h

#import <Foundation/Foundation.h> 

@interface mySingleton : NSObject { 

} 
+ (NSMutableDictionary *) myMutableDict; 

@end 

mySingleton.m

#import "mySingleton.h" 

@implementation mySingleton 

+ (NSMutableDictionary *)myMutableDict 
{ 
    static NSMutableDictionary *singletonInstance = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     singletonInstance = [[NSMutableDictionary alloc]init]; 

    }); 
    return singletonInstance; 
} 

@end 

只要你有mySingleton.h在所有的視圖控制器,你可以訪問數據通過[mySingleton myMutableDict]。例如:[[mySingleton myMutableDict] setObject:myObject forKey:myKey];這當然適用於任何對象類型。

0

它似乎是循環依賴的情況。使用

@class StoryAppDelegate;

代替

#import "StoryAppDelegate.h" 
在你的頭文件

1

只是不使用應用程序委託。這不是它的目的。

相反,創建一個特定的類來擁有責任+知識,使其成爲一個單例,並讓所有類都需要它通過它的'sharedController'(或任何你稱之爲的)類方法獲得它。

或者使用帶有靜態變量或其他東西的「常量」文件(而不是應用程序委託)。

1

故事板僅用於設計,不用更改代碼。

對於這一點,你會使用:

AppDelegate *app; 

在視圖的控制器的頭文件。

並在實施文件,

app=(AppDelegate *)[[UIApplication sharedApplication]delegate]; 

然後,你可以使用app.yourVariable