【发布时间】:2011-06-28 21:32:26
【问题描述】:
我对 iPhone 编程真的很陌生。
这个应用程序是一个简单的测验。 FirstAppDelegate.m 创建一个 QuizViewController 实例并将其视图添加到窗口中。
#import "FirstAppDelegate.h"
#import "ResultViewController.h"
#import "QuizViewController.h"
@implementation FirstAppDelegate
@synthesize window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {
UIViewController *vc = [[QuizViewController alloc] init];
[window addSubview:[vc view]];
[window makeKeyAndVisible];
[vc release];
return YES;
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
我想我可以像我听到的那样释放 vc,因为 window 会保留它(?)但它产生了一个错误:
2011-06-28 23:06:34.190 First[14289:207] -[__NSCFType foo:]: unrecognized selector sent to instance 0x4e1fc90
2011-06-28 23:06:34.193 First[14289:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType foo:]: unrecognized selector sent to instance 0x4e1fc90'
...所以我评论了它,现在它工作正常。但是我应该在哪里发布vc?这是 QuizViewController.h:
#import <UIKit/UIKit.h>
@interface QuizViewController : UIViewController {
IBOutlet UILabel *questionLabel;
IBOutlet UIButton *button1;
IBOutlet UIButton *button2;
IBOutlet UIButton *button3;
int currentQuestionIndex;
int corrects;
NSMutableArray *questions;
NSMutableArray *answers;
NSMutableArray *correctAnswers;
}
- (IBAction)foo:(id)sender;
@end
...和 QuizViewController.m:
#import "QuizViewController.h"
@implementation QuizViewController
- (id)init {
NSLog(@"QuizViewController init");
[super initWithNibName:@"QuizViewController" bundle:nil];
questions = [[NSMutableArray alloc] init];
answers = [[NSMutableArray alloc] init];
correctAnswers = [[NSMutableArray alloc] init];
[questions addObject:@"Vad betyder det engelska ordet \"though\"?"];
[answers addObject:@"Tuff"];
[answers addObject:@"Dock"];
[answers addObject:@"Tanke"];
[correctAnswers addObject:@"Dock"];
[questions addObject:@"Vad hette frontpersonen i Popbandet Queen?"];
[answers addObject:@"Pierre Bouviere"];
[answers addObject:@"Freddie Mercury"];
[answers addObject:@"Stevie Wonder"];
[correctAnswers addObject:@"Freddie Mercury"];
return self;
}
- (IBAction)foo:(id)sender {
NSLog(@"foo");
}
- (void)loadView {
NSLog(@"QuizViewController loadView");
[questionLabel setText:[questions objectAtIndex:currentQuestionIndex]];
[button1 setTitle:[answers objectAtIndex:currentQuestionIndex] forState:UIControlStateNormal];
[button2 setTitle:[answers objectAtIndex:currentQuestionIndex + 1] forState:UIControlStateNormal];
[button3 setTitle:[answers objectAtIndex:currentQuestionIndex + 2] forState:UIControlStateNormal];
[super loadView];
}
- (void)viewDidLoad {
NSLog(@"QuizViewController viewDidLoad");
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (void)dealloc {
[super dealloc];
}
@end
【问题讨论】: