打开手机手电筒

import<AVFoundation/AVFoundation.h>//打开手电筒 需要框架

//按钮触发方法

-(void)flashlightButtonAction:(UIButton *)button
{
    NSLog(@"打开手电筒");
    Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
    if(captureDeviceClass != nil) {
        AVCaptureDevice*device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
        if([device hasTorch]) { // 判断是否有闪光灯
            // 请求独占访问硬件设备
            [device lockForConfiguration:nil];
            if(!button.selected) {
                [device setTorchMode:AVCaptureTorchModeOn];//手电筒开
            }else{
                [device setTorchMode:AVCaptureTorchModeOff]; // 手电筒关
            }
            // 请求解除独占访问硬件设备
            [device unlockForConfiguration];
        }
    }
    button.selected = !button.selected;
}

// 上面用到了NSClassFromString(NSString*aClassName) 做一下记录
FOUNDATION_EXPORT Class _Nullable NSClassFromString(NSString *aClassName);
如果你要获取的类不存在,则会返回一个nil对象,程序不会崩溃,适用于进行你不确定类的初始化。

NSClassFromString应用

通过字符串拿到类对象 如果拿不到则是nil

有的时候做一些页面的po判断
//拿到AViewController这个类对象
Class tempVC = NSClassFromString(@"AViewController");
    for (UIViewController *controller in self.navigationController.viewControllers) {
//遍历中做判断  有tempVC时 pop返回
        if ([controller isKindOfClass:tempVC]) {
            [self.navigationController popToViewController:controller animated:YES];
            break;
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,977评论 0 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,530评论 1 32
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型...
    龍飝阅读 2,291评论 0 12
  • 源码加翻译 #import <Foundation/NSArray.h> #import <Foundation/...
    CAICAI0阅读 1,218评论 0 50
  • 昨天,宝贝儿们跟着爸爸回老家了,我一个人在家睡到8:30 才起床。好久没有这么没有任何顾虑的睡到自然醒...
    O卓越O阅读 223评论 0 0

友情链接更多精彩内容