我是Iphone编程的新手。请纠正我哪里出错了。
我有两个viewcontrollers
viewcontroller1 viewcontroller2
在viewcontroller1中,
-(IBAction) getQuestions:(id)sender
{
NSLog(@"In get questions..");
[[self viewcontroller2] initWithData:userInfo];
[self presentModalViewController:viewcontroller2 animated:YES];
[quesions autorelease];
}
在viewController2中,我有以下代码。
-(id)initWithData:(NSMutableDictionary*)data
{
self = [super init];
if(self)
{
userInfo = [[NSMutableDictionary alloc] initWithDictionary:data];
}
return self;
}
-(IBAction) getQuesionAfterPopUp:(id) sender
{
NSLog(@"In get question..After popup...%@",userInfo);
}
由于某种原因,“userInfo”为空。为什么即使将init与数据一起使用它也是null。
答案 0 :(得分:0)
您没有正确初始化,因此无法访问实例变量userInfo
。
初始化应如下所示:
- (id)initWithData:(NSMutableDictionary *)data
{
self = [super init]; // 'self' and it's instance variables are accessible at this point ...
if (self)
{
userInfo = // etc...
}
return self;
}
您可能需要read up on this link以获取有关如何实现指定初始值设定项的更多信息。特别关注实施初始化程序主题。
答案 1 :(得分:0)
在上面的代码中,您不会保留userInfo
个对象。试试
userInfo = [[[NSMutableDictionary alloc] initWithDictionary:data]]retain];
或者,如果userInfo是如下属性:
@property (nonatomic, retain)
尝试:
self.userInfo = [[NSMutableDictionary alloc] initWithDictionary:data]];
哪个会自动保留userInfo。请注意,如果不调用self,则直接指定实例变量。
最后,确保data
对象不为空