发送到实例的无法识别的选择器
问题描述:
我正在使用appDelegate共享NSMutableArray,但它崩溃了。错误信息是无法识别的选择器发送到实例发送到实例的无法识别的选择器
countrydata *countryobj=(countrydata *)[listItems objectAtIndex:indexPath.row];
if(addItems==nil)
{
addItems=[[NSMutableArray alloc]init];
}
[addItems addObject:countryobj];
callAppDelegate *appDelegate = (callAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.AddItems=addItems;
[self dismissModalViewControllerAnimated:YES];
我的代码错在哪里? appdelegate.AddItems是NSMultableArray,并且已经在callAppDelegate.h中解密。我已经在顶端导入了callAppDelegate.h。
答
如果错误发生在appDelegate.AddItems = addItems那么您可能忘记合成它。
你应该@implementation
后您的*appDelegate.m
添加@synthesize AddItems;
这是假设你已经宣布它@property (nonatomic, retain/assign)
在你的头文件(.h)中
[更新]小评论,如果您确实声明它为@property (nonatomic, retain)
,那么在将其设置为保留属性后应该释放addItems
,因为它会导致内存泄漏。
E.g.
appDelegate.AddItems=addItems;
[addItems release];
哪条线发生错误?该错误消息意味着您正在向未声明该消息的对象发送消息。 addItems可能的内存泄漏以及btw – willcodejavaforfood 2010-10-05 07:28:50
appDelegate.AddItems = addItems;发生错误。我无法解析appDelegate的值。 – saturngod 2010-10-05 07:29:45
您的变量和类命名 - “方案”确实令人困惑。一些变量以大写字母开头,一些以小写字母开头。这同样适用于你的班级名称。如果您的项目开始增长,这会给您带来很大的麻烦。 – 2010-10-05 07:40:56