2011-08-10 10 views
1

私はあなたのビューのボタンを押すと、LEDフラッシュをオンまたはオフにする簡単な小さな懐中電灯アプリで遊んでいます。iPhone 4の懐中電灯アプリの電源が切れても点滅しないようにするにはどうすればよいですか?

これはうまく動作しますが、フラッシュをオフにすると、電源を切る前に一度点滅します。この現象を引き起こす原因は何ですか?

は、ここで適切なコードです:

// 
// No_Frills_FlashlightViewController.m 
// No Frills Flashlight 
// 
// Created by Terry Donaghe on 8/9/11. 
// Copyright 2011 Tilde Projects. All rights reserved. 
// 

#import "No_Frills_FlashlightViewController.h" 

@implementation No_Frills_FlashlightViewController 

@synthesize AVSession; 


- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

#pragma mark - View lifecycle 

/* 
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 
*/ 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

- (IBAction)TurnOnLight:(id)sender { 
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 

    AVSession = [[AVCaptureSession alloc] init]; 

    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil]; 
    [AVSession addInput:input]; 

    AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init]; 
    [AVSession addOutput:output]; 

    [AVSession beginConfiguration]; 
    [device lockForConfiguration:nil]; 

    [device setTorchMode:AVCaptureTorchModeOn]; 
    [device setFlashMode:AVCaptureFlashModeOn]; 

    [device unlockForConfiguration]; 
    [AVSession commitConfiguration]; 

    [AVSession startRunning]; 

    [self setAVSession:AVSession];  

    [output release]; 
} 

- (IBAction)TurnOffLight:(id)sender { 

    [AVSession stopRunning]; 
    [AVSession release]; 
    AVSession = nil; 
} 

- (IBAction)DoNothing:(id)sender { 
} 
@end 

AVSessionだけのクラスレベルのAVCaptureSession変数です。

はい、これは私がインターネット上で見つけたコードです。私はちょうど遊んでいると物事を把握しようとしています。

+0

関数内の各行でブレークポイントを追加して、ライトをオフにし、フラッシュからの動作を目撃してみてください。この方法では、問題の原因となっている行を確認できます。 –

+0

興味深い。ブレークポイント(メソッドの最初の行)に達する前に、オフボタンをタッチするとすぐに点滅します。 –

+0

は、TurnOffLightを実行した直後に実行されるTurnOffLightメソッドですか、完全に分離されていますか? –

答えて

0

私は何が起こっているのかを理解しましたが、コードとは関係ありませんでした。 :) ID10Tエラー。

"Turn On"ボタンをコピーして "Turn Off"ボタンを作成しました。私はコピーのためにそこにあったTurnOnLightメソッドへの "Turn Off"ボタンの接続を断つことを忘れていました。

私は単にその接続を削除して、アプリは完璧に動作します! :)

教訓:ときにはソースコードが問題になることはありません。 :D