当我这样做时,我的应用程序崩溃没有任何错误。
footballScores = [[FootBallScores alloc] init];
[footballScores initStuff];
我从我的视图控制器的viewDidLoad中调用它。
但如果我发表评论
footballScores = [[FootBallScores alloc] init];
//[footballScores initStuff];
将方法调用initStuff移动到类FootballScores中的init方法中,它完全可以正常工作。
因此,似乎某种原因从类外部调用initStuff导致我的应用程序崩溃。
任何人都可以告诉我为什么会这样?
非常感谢, 代码
EDITS
-(void) init
{
//[self initStuff];
}
- (void)initStuff // Was - (void)awakeFromNib
{
NSLog(@" init called");
appDelegate = (FootballRadioAppDelegate *)[[UIApplication sharedApplication]
delegate];
responseData = [[NSMutableData data] retain];
baseURL = [[NSURL
URLWithString:@"http://footballmatchcentre.timesonlinesport.co.uk/ifb2009/league.asp?
league=EPL"] retain];
NSURLRequest *request = [NSURLRequest requestWithURL:baseURL];
[[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];
}
init的主体被注释掉以测试来自类外部的调用,并且我取消注释它以测试它是否通过从类中调用而起作用。
答案 0 :(得分:2)
你的-init方法应该返回id类型的self,而不是void。它应该将[super init]归因于self。标准的-init实现将是:
- (id)init {
self = [super init];
if (self != nil) {
// initialisation code
}
return self;
}
然后你可以有一个 - (void)initStuff方法,并在if中测试self!= nil的块中发送[self initStuff]。