我的appDelegate中有两种var类型:int和NSMutableArray
我可以在我的viewController中访问int var,但无法访问NSMutableArray
这是代码:
appDelegate.h
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate,NINetworkImageViewDelegate,FBSessionDelegate, FBDialogDelegate>
{
UIWindow *window;
UINavigationController *navController;
int nbNewsNonLues;
NSMutableArray *tableauNews;
}
@property (strong, nonatomic) NSMutableArray *tableauNews;
@property (nonatomic) int nbNewsNonLues;
@end
这些var在AppDelegate.m中已很好地初始化(选中)
然后我尝试在ViewController.m中使用此代码访问他们
@synthesize appDelegate = _appDelegate;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"%@", appDelegate.tableauNews);
NSLog(@"%d", appDelegate.nbNewsNonLues);
NSLog(@"%@", appDelegate);
}
return self;
}
日志返回
2012-07-23 02:58:21.475 Aviso_0.1 [2990:11303](空)
2012-07-23 02:58:25.432 Aviso_0.1 [2990:11303] 2
2012-07-23 02:58:25.432 Aviso_0.1 [2990:11303]
因此,我无法访问tableauNews,但可以访问和修改nbNewsNonlues?
我知道这是一个菜鸟问题,但我已经阅读并在Google上搜索了好几个小时,肯定有关于授权问题的遗漏
需要帮助,
最佳答案
这两行不同:
NSMutableArray *tableauNews;
@property (strong, nonatomic) NSMutableArray *tableauNews;
在第一个中,创建一个名为tableauNews的iVar。在第二个示例中,您将创建一个名为tableauNews的属性,并具有一个名为_tableauNews的后备iVar。请注意支持iVar的_tableauNews得分不足。因此,您创建了两个不同的对象。当您分配,访问iVar tableauNews和属性self.tableauNews等时,您正在分配,访问两个不同的对象。但是iVar _tableauNews与前面提到的属性self.tableauNews相同。为了避免将来发生此类错误,惯例是在iVar中添加下划线前缀。
更新以回答评论部分中的问题:
在此行
@synthetise tableauNews = _tableauNews
中,这就是您为属性(_tableauNews
)声明后备iVar(tableauNews
)的方式。当您如上所述声明属性tableauNews
并在.m文件中尝试声明相应的@synthesize tableauNews
时,Xcode会自动为您提供支持分数版本(_tableauNews
)作为iVar的后盾,因此您不需要在头文件的iVars声明部分中声明它(_tableauNews
)。但是,您可以将资产与自己的支持iVar相关联。例如,如果在头文件中声明了名为tableauNewsTest
的iVar,则理论上可以在.m文件@synthesize tableauNews = tableuNewsTest
中执行此操作。但是不建议这样做。关于objective-c - 无法访问appDelegate NSMutableArray,但我可以访问和修改appDelegate int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11605333/