我真的很新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像我這樣做,因爲聽到窗口將保留,但它產生的錯誤(?):
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