如下代码中方法一 到 方法五,经测试发现 当应用启用时,方法一 被调用了2次,方法二 被调用了10次,方法三 被调用了20次,方法四 被调用了10次,方法五 被调用了5次,对于新手来说,这简直不能理解,望路过的大神指教一二!!!
//接口文件
#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>
@interface ShawViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource>
@property (weak, nonatomic) IBOutlet UIPickerView *picker;
@property (weak, nonatomic) IBOutlet UIImageView *image;
@property (weak, nonatomic) IBOutlet UIButton *startBn;
- (IBAction)clicked:(id)sender;
@end
//实现文件
#import "ShawViewController.h"
@implementation ShawViewController
UIImage *loseImage;
UIImage *winImage;
NSArray *images;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
loseImage = [UIImage imageNamed:@"lose-60.png"];
winImage = [UIImage imageNamed:@"win-60.png"];
UIImage *blue = [UIImage imageNamed:@"blue-60.png"];
UIImage *red = [UIImage imageNamed:@"red-60.png"];
UIImage *gray = [UIImage imageNamed:@"gray-60.png"];
images = [NSArray arrayWithObjects:blue, red, gray, nil];
self.picker.dataSource = self;
self.picker.delegate = self;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//方法一
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 5;
}
//方法二
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return images.count;
}
#define kImageTag 1
//方法三
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
if (view.tag != kImageTag) {
view = [[UIImageView alloc] initWithImage:[images objectAtIndex:row]];
view.tag = kImageTag;
view.userInteractionEnabled = NO;
}
return view;
}
//方法四
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
return 40;
}
//方法五
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 40;
}
- (IBAction)clicked:(id)sender
{
self.startBn.enabled = NO;
self.image.image = nil;
NSMutableDictionary *result = [[NSMutableDictionary alloc] initWithCapacity:6];
NSURL *winSoundUrl = [[NSBundle mainBundle] URLForResource:@"crunch" withExtension:@"wav"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef) (winSoundUrl), &soundID);
AudioServicesPlayAlertSound(soundID);
for (int i = 0; i < 5; i++) {
NSUInteger selectedVal = arc4random() % images.count;
[self.picker selectRow:selectedVal inComponent:i animated:YES];
if ([result objectForKey:[NSNumber numberWithInt:selectedVal]]) {
NSUInteger newCount = [[result objectForKey:[NSNumber numberWithInt:selectedVal]] integerValue];
[result setObject:[NSNumber numberWithInt:(newCount + 1)] forKey:[NSNumber numberWithInt:selectedVal]];
}
else
{
[result setObject:[NSNumber numberWithInt:1] forKey:[NSNumber numberWithInt:selectedVal]];
}
NSUInteger maxOccurs = 1;
for (NSNumber *num in [result allKeys]) {
if ([[result objectForKey:num] integerValue] > maxOccurs)
maxOccurs = [[result objectForKey:num] integerValue];
}
if (maxOccurs >= 3)
[self performSelector:@selector(showWin) withObject:nil afterDelay:0.5];
else
[self performSelector:@selector(showLose) withObject:nil afterDelay:0.5];
}
}
- (void)showWin
{
NSURL *winSoundUrl = [[NSBundle mainBundle] URLForResource:@"win" withExtension:@"wav"];
SystemSoundID soundId;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(winSoundUrl), &soundId);
AudioServicesPlaySystemSound(soundId);
self.image.image = winImage;
self.startBn.enabled = YES;
}
- (void)showLose
{
self.image.image = loseImage;
self.startBn.enabled = YES;
}
@end