2013-06-25 35 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