无法访问 AppDelegate 变量
Posted
技术标签:
【中文标题】无法访问 AppDelegate 变量【英文标题】:Cannot access AppDelegate variables 【发布时间】:2015-12-05 20:36:57 【问题描述】:我已经在我的应用委托中声明了一个变量:
@interface AppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate>
CLLocationManager *locationManager;
@property(nonatomic, strong) PFGeoPoint *shovelLocation;
我已经在我的 AppDelegate 中合成了它:
@interface AppDelegate ()
@end
@implementation AppDelegate
@synthesize shovelLocation;
我已将 AppDelegate.h 文件导入我的另一个视图控制器文件,我试图从以下文件访问此对象:
#import "AppDelegate.h"
问题是,当我创建 appDelegate 对象并尝试访问其属性时,它说它没有 shovelLocation 属性:
//get location
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
PFGeoPoint *location = appDelegate.shovelLocation;
^
Property 'shovelLocation' not found on object of type 'AppDelegate *'
这不是我正在创建的 AppDelegate 的真实实例,还是我遗漏了一些明显的东西?
【问题讨论】:
您是否尝试过清理并重建? 是的,我这样做了,我什至还重新启动了 xcode 你是否包含了应用代理的标题 如在#import "AppDelegate.h" 中? #import不确定这是否能解决您的问题,但请尝试使用 retain 而不是 strong
@property (nonatomic, retain) PFGeoPoint *shovelLocation;
也不需要演员表。 (AppDelegate*)
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
【讨论】:
【参考方案2】:在Appdelegate.h
文件中写入以下代码:
@property(nonatomic, strong) PFGeoPoint *shovelLocation;
+(AppDelegate *)sharedAppDelegate;
并在Appdelegate.m
中写入方法
+(AppDelegate *)sharedAppDelegate
return (AppDelegate *)[[UIApplication sharedApplication] delegate];
并编写以下代码来调用此变量:
AppDelegate *app=[AppDelegate sharedAppDelegate];
PFGeoPoint *location = app.shovelLocation;
它正在工作,使用它!
【讨论】:
以上是关于无法访问 AppDelegate 变量的主要内容,如果未能解决你的问题,请参考以下文章
Singleton 类 DataLoader - 在 AppDelegate 中从 Core Data 设置值,但无法访问其他类中的 DataLoader 变量
无法从 AppDelegate 访问 NSObject 的公共方法
如何从 AppDelegate 访问 ViewController 变量
AppDelegate (OSX) 中主 NSWindow 的引用出口