我有两个viewControllers访问NSNumber的AppDelegate.其中一个人可以看到它,而另一个则不能.我对这完全感到困惑.
有问题的那个有这个代码.
AppDelegate *dataStore = (AppDelegate *)[[UIApplication sharedApplication] delegate];
dataStore.downHUD = [NSNumber numberWithFloat:(float)progress];
Run Code Online (Sandbox Code Playgroud)
另一个有这个.
AppDelegate *dataStore = (AppDelegate *)[[UIApplication sharedApplication] delegate];
dataStore.downHUD = [NSNumber numberWithFloat:(float)0];
Run Code Online (Sandbox Code Playgroud)
两者都在.m文件中导入AppDelegate,但我最终得到了
在'AppDelegate*'类型的对象上找不到属性'downHUD'
与第一个.谁能帮我看看有什么不对?
我错误地复制并粘贴了很多代码AppDelegate,这已得到纠正.是否有某种链接可能被破坏?
也许你AppDelegate班上没有这样的财产.
在您需要的接口声明下的AppDelegate.h中
@property (nonatomic, retain) NSNumber* downHUD;
Run Code Online (Sandbox Code Playgroud)
在您的AppDelegate.m中,您需要具有实现声明
@synthesize downHUD;
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以定义访问器(getter和setter)来访问名为的实例变量downHUD.这个访问者是公开的,你可以这样做
dataStore.downHUD = ...
Run Code Online (Sandbox Code Playgroud)
也许这可能是错误.但是没有AppDelegate代码,很难理解发生了什么.
希望能帮助到你.
编辑:
在应用程序委托中访问数据并不是一个好策略.我建议你使用单身人士这样的单身人士 - appdelegates-and-top-level.html
编辑2:
@interface SingletonModel : NSObject {
NSNumber* downHUD_;
}
+ (id)sharedInstance;
@property (nonatomic, retain) NSNumber* downHUD;
@end
#import "SingletonModel.h"
@implementation SingletonModel
@synthesize downHUD = downHUD_;
static SingletonModel *sharedInstance = nil;
+ (SingletonModel *)sharedInstance {
if (sharedInstance == nil) {
sharedInstance = [[super allocWithZone:NULL] init];
}
return sharedInstance;
}
- (id)init
{
self = [super init];
if (self) {
}
return self;
}
-(void)dealloc
{
[super dealloc];
}
+ (id)allocWithZone:(NSZone*)zone {
return [[self sharedInstance] retain];
}
- (id)copyWithZone:(NSZone *)zone {
return self;
}
- (id)retain {
return self;
}
- (NSUInteger)retainCount {
return NSUIntegerMax;
}
- (oneway void)release {
}
- (id)autorelease {
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
要设置模型:
SingletonModel* model = [SingletonModel sharedInstance];
model.downHUD = ...
Run Code Online (Sandbox Code Playgroud)
要阅读您的模型:
SingletonModel* model = [SingletonModel sharedInstance];
NSNumber* n = model.downHUD;
Run Code Online (Sandbox Code Playgroud)
有关其他信息,请阅读iphone-code-snippet-the-singleton-pattern和singleton-classes.关于Singletons,你可以在Cocoa Fundamentals Guide和Singleton的苹果文档中找到.
| 归档时间: |
|
| 查看次数: |
8191 次 |
| 最近记录: |