故事板中的Appdelegate变量

时间:2013-06-25 09:22:07

标签: ios objective-c cocoa-touch

我曾经在appdelegate中声明了变量,并使其在所有类中都是可共享的(如果变量是全局的)。

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

这是我正常使用的代码来访问appdelegate变量。现在我正在尝试一个故事板应用程序,它不适合我。在声明appdelegate时,它显示错误"未知类型名称StoryAppDelegate"。

StoryAppDelegate*ss; 

这是我正在使用的代码。

任何帮助表示感谢。

4 个答案:

答案 0 :(得分:1)

只是不要使用app delegate。这不是它的用途。

相反,创建一个特定的类来拥有责任+知识,使它成为一个单例,并让所有需要它的类通过它的'sharedController'(或任何你称之为)类方法来获取它。

或者使用带有静态变量的“常量”文件(不是应用委托)。

答案 1 :(得分:1)

故事板仅用于设计,而不是代码的更改。

为此,你可以使用:

AppDelegate *app;

在视图控制器的头文件中。

在实施文件中,

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

然后你可以使用app.yourVariable

答案 2 :(得分:0)

似乎是循环依赖的情况。

使用@class StoryAppDelegate;

而不是

#import "StoryAppDelegate.h"

在你的头文件中。

答案 3 :(得分: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];这当然适用于任何对象类型。