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加载单元格,并在此时向其传递任何数据。