0

我曾经在 appdelegate 中声明 variale 并使其在所有类中都可以共享(如果变量是 global )。

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

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

StoryAppDelegate*ss; 

这是我正在使用的代码。

任何帮助表示赞赏。

4

4 回答 4

1

Storyboard 仅用于设计,不用于更改代码。

为此,您将使用:

AppDelegate *app;

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

在实现文件中,

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

然后你可以使用 app.yourVariable

于 2013-06-25T13:32:00.400 回答
1

只是不要使用应用程序委托。那不是它的用途。

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

或者使用带有静态变量或其他东西的“常量”文件(只是不是应用程序委托)。

于 2013-06-25T09:30:40.973 回答
0

I would recommend using a singleton instance of your global variable as they have bailed me out of your exact situation multiple times. Here is an example I'm currently using to implement a singleton. This methodology is also ARC-safe as well

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

As long as you include mySingleton.h in all of your view controllers you can access the data via [mySingleton myMutableDict]. For example: [[mySingleton myMutableDict] setObject:myObject forKey:myKey]; This will of course work with any object type.

于 2013-06-25T10:55:41.880 回答
0

似乎是循环依赖的情况。

利用@class StoryAppDelegate;

代替

#import "StoryAppDelegate.h"

在你的头文件中。

于 2013-06-25T09:27:55.510 回答