我在iPad应用中使用了Reachability,并在使用modalViewControllers时发现了一些问题。
在我的mainViewController中,我有一个BOOL变量,用于确定我在线或不在线的天气。这是我的代码:
// mainViewController.h
BOOL online;
// mainViewController.m
- (void)reachabilityChanged:(NSNotification *)note
{
if([[note object] isReachable]) {
online = YES;
}
else {
online = NO;
}
}
- (void)getOnline
{
NSLog(@"%d", online);
}
// modalViewController.m
#import "mainViewController.h"
- (IBAction)dismissMe
{
mainViewController *main = [[mainViewController alloc] init];
[main getOnline];
[self dismissModalViewControllerAnimated:YES];
}
当我在mainViewController中调用[self getOnline]
时,它返回1(因为我 am 在线)。
但是:当我在modalViewController中调用[main getOnline]时,它会在日志中返回0。
有人知道为什么吗?!
我还尝试将online
变量作为@property
放入modalViewController中,以处理模式中的 if online stuff 。但是当我为它(从主要)分配一个值,并在模态中记录它时,它总是返回(NULL)
。
答案 0 :(得分:1)
简短回答:因为他们使用 online
变量的个实例。
答案很长:你只应在标题中声明 BOOL online
,而不是 define 。定义应该在.m文件中进行,如下所示:
在mainViewController.h中:
extern BOOL online; // Declare the variable
在mainViewController.m中:
BOOL online; // Define the variable
// the rest of your code
编写代码的方式,为包含BOOL online
的每个.m文件创建单独的mainViewController.h
;我确信这是不你的意图。