iphone app:EXC_BAD_ACCESS,消息发送到解除分配的实例

时间:2014-08-25 13:46:11

标签: ios objective-c iphone

我是一名新的iPhone开发者。我正在使用一个使用两个表视图的应用程序。     我的代码在iOS 6上运行良好,但是当我去iOS 7并尝试启动应用程序时,我遇到了以下错误。     根据网上的一些答案,我启用僵尸。     返回的初始错误消息是 EXC_BAD_ACCESS 。当我启用NSZombieEnabled时,我收到错误消息" - [CFString retain]:消息发送到解除分配的实例"

这是一段代码,抛出错误,     导致错误的是,

SystemViewController.h

if(indexPath.section == 0)
{
  //User Info section
  if(indexPath.row == 0)
  {
    cell2.label1.text = @"User";
    cell2.label2.text = [UserInfoBean userName];
  }
  else
  {
   cell2.label1.text = @"SI Host URL";
   cell2.label2.text = [UserInfoBean url];
  }
  cell = cell2;
}

Interface UserInfoBean.h

@implementation UserInfoBean

static NSString *userName;
static NSString *url;
static NSString *presentNode;




+ (NSString *)userName { return userName; }
+ (NSString *)url { return url; }
+ (NSString *)presentNode { return presentNode; }


+ (void)setUserName:(NSString *)newVar { userName = newVar; }
+ (void)setUrl:(NSString *)newVar { url = newVar; }
+ (void)setPresentNode:(NSString *)newVar { presentNode = newVar; }

@end

Thanks in advance!

1 个答案:

答案 0 :(得分:1)

我建议使用属性而不是编写自己的变量访问器方法,如下所示:

@property (nonatomic, retain) NSString *userName; 

编译器负责所有设置/获取这些变量,使用 retain 将执行以下操作:

  

保留对象会创建强引用,而对象则不能   被解除分配,直到所有强引用都被释放。如果两个   对象相互保留,对象都不会被释放   因为它们之间的联系不能被打破

创建属性后,可以删除getter / setter方法,只需使用UserInfoBean.userName = @""设置或NSString * something = UserInfoBean.userName得到。