Iphone 从nib问题加载自定义单元格

Iphone 从nib问题加载自定义单元格,iphone,objective-c,ios,uitableview,Iphone,Objective C,Ios,Uitableview,我有我的自定义CustomTableViewCell:UITableViewCell,带有@属性(非原子,保留)模型*模型。还有一个具有一个视图的xib文件(具有正确配置的类和重用标识符的单元)。在我的自定义单元格类中,有一个-init实现: - (id)init { NSArray* array = [[NSBundle mainBundle] loadNibNamed:@"CustomTableViewCell" owner:self options:nil]; Custom

我有我的自定义
CustomTableViewCell:UITableViewCell
,带有
@属性(非原子,保留)模型*模型。还有一个具有一个视图的xib文件(具有正确配置的类和重用标识符的单元)。在我的自定义单元格类中,有一个
-init
实现:

- (id)init
{
    NSArray* array = [[NSBundle mainBundle] loadNibNamed:@"CustomTableViewCell" owner:self options:nil];
    CustomTableViewCell* cell = [[array firstObject] retain];
    self = cell;

    self.model = [[Model alloc] init] autorelease];
    self.model.someString = @"foo";

    // here I can access self.model with no problem
    return self;
    // after method return, self.model refers to 0x0
}
我的问题是。。。返回
-init
后,
self.model
为零。单元正在工作,但没有
模型
。我不知道为什么。有什么想法吗?我想,我的
-init
是不洁的

编辑
我发现,返回后模型为nil no,但在调用表视图数据源方法时。表视图也引用了0x0,这让我非常惊讶。真奇怪!感谢您的努力,我将用代码编写我的单元…

您在实现中合成了模型吗

@synthesize model;

您是否在实现中综合了模型

@synthesize model;

您不应该在init方法中为IVAR使用点属性语法。基本上是因为整个对象可能还没有完全设置好。试试这个:

model=[Model alloc] init];
model.someString=@"foo";
此外,在使用IVAR进行任何其他操作之前,您应该检查self是否为零


祝你好运。

在init方法中不应该对ivar使用点属性语法。基本上是因为整个对象可能还没有完全设置好。试试这个:

model=[Model alloc] init];
model.someString=@"foo";
此外,在使用IVAR进行任何其他操作之前,您应该检查self是否为零

祝你好运

  • 您需要检查
    [Model alloc]init]
    的结果,确保值不是nil
  • 检查单元格的属性
    模型
    ,确保未分配该属性
  • 如果
    单元格
    型号
    仍然为零,请在此处发布更多代码
  • 您需要检查
    [Model alloc]init]
    的结果,确保值不是nil
  • 检查单元格的属性
    模型
    ,确保未分配该属性
  • 如果
    单元格
    型号
    仍然为零,请在此处发布更多代码
    对另外,我在
    -dealoc
    中释放它。是的。另外,我在
    -dealoc
    中发布了它。当你说你可以毫无问题地访问self.model时,你是什么意思?你可以在登录或调试器时看到一个有效对象,或者只是你没有从init方法中得到任何运行时错误?让你的单元格保存一个“模型”似乎是一种不寻常的模式-显然我不知道它在你的应用程序上下文中是什么,但是如果它指的是单元格中显示的数据,那么由于单元格的重用,这不是正常的处理方式。在表视图数据源CellForRowatineXpath方法期间,您的单元格通常会从自定义xib加载,并在此时传递给它的任何数据。当您说您可以毫无问题地访问self.model时,您的意思是什么?你可以在登录或调试器时看到一个有效对象,或者只是你没有从init方法中得到任何运行时错误?让你的单元格保存一个“模型”似乎是一种不寻常的模式-显然我不知道它在你的应用程序上下文中是什么,但是如果它指的是单元格中显示的数据,那么由于单元格的重用,这不是正常的处理方式。在使用表视图数据源CellForRowatineXpath方法期间,通常会从自定义xib加载单元格,并在此时向其传递任何数据。