首页
学习
活动
专区
圈层
工具
发布

在iOS 12上运行的类中是否可以使用@available(iOS 13)计算属性?

在iOS 12上运行的类中是无法使用@available(iOS 13)计算属性的。@available是一个编译指令,用于在不同的平台或版本上进行条件编译。它可以用来标记某个特定的API在特定的平台或版本上是否可用。在这种情况下,@available(iOS 13)表示该属性只在iOS 13及以上版本可用。

由于iOS 12不支持@available(iOS 13)这个条件,因此在iOS 12上运行的类中无法使用该计算属性。如果在iOS 12上使用了该属性,编译时会出现错误。

然而,可以通过其他方式来实现在不同版本上使用不同的计算属性。一种常见的方法是使用运行时检查当前设备的系统版本,然后根据版本来决定是否使用该属性。例如,可以使用UIDevice的systemVersion属性来获取当前设备的系统版本号,然后在代码中进行条件判断。

以下是一个示例代码:

代码语言:txt
复制
class MyClass {
    var myProperty: Int {
        if #available(iOS 13, *) {
            // 在iOS 13及以上版本使用的计算属性逻辑
            return 10
        } else {
            // 在iOS 12及以下版本使用的计算属性逻辑
            return 5
        }
    }
}

在上述代码中,使用了条件编译指令#available来检查当前设备的系统版本。如果设备运行的是iOS 13及以上版本,就会执行相应的逻辑;否则,会执行另外的逻辑。

需要注意的是,这种方式只能在运行时动态地根据系统版本来选择不同的逻辑,而不能在编译时决定是否使用某个属性。因此,在iOS 12上运行的类中无法直接使用@available(iOS 13)计算属性。

相关搜索:是否可以在真实的ios设备上运行Fastlane快照?是否可以在iPadOS上安装为iOS 12开发的应用程序是否可以在ios上使用firebase更新已发送的通知?我已经为聊天应用程序编写了代码,在iOS 12上运行良好,但在iOS 13中,它返回空值苹果的新指南:“用苹果登录”是只在iOS 13上使用,还是我们可以在iOS 10或更低的设备上使用?苹果的纽约字体可以在iOS 12中使用吗?可以在windows中的真实ios设备上运行appium测试吗使用临时生成的本机ipa文件将无法在ios 13真实设备上运行可以在Xcode7中使用iOS 10的新类吗?有没有办法检查特定的flutter插件是否可以在特定的Android/IOS操作版本上运行?使用xcode11在iOS13上运行项目时,基于视图控制器的旋转停止工作是否可以在同一台机器的不同用户帐户上使用grid运行Appium IOS测试用例是否可以通过使用另一个类中的变量在枚举中拥有计算属性(调用函数)?是否可以在iOS上运行持久的tcp侦听套接字,即使我的应用程序不是前台应用程序?iOS上的应用程序是否可以在BLE中实现设备信息服务中的固件版本字符串特征Meteor应用程序不能在生产环境中下载iOS上的数据,但可以在TestFlight中运行我们是否可以在计算机中的Pycharm界面中进行开发,同时在另一台远程PC上使用计算资源和环境运行它在使用frida小工具重新打包iOS应用程序时,是否可以将键值对添加到新的授权文件中?我正在使用expo,有没有用于react原生应用程序的日期选择器包,可以同时在iOS和安卓系统上运行是否可以将一个属性值作为参数传递给通过函数计算其值的另一个属性?(在带有类的Javascript ES6中)
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS-定位

属性,可以认为在iOS8.下allowsBackgroundLocationUpdates永远为YES; 3、iOS11.与iOS12....如下图 -如果app默认不使用精确定位,则可以在info.plist中配置NSLocationDefaultAccuracyReduced字段,配置该字段后,申请定位权限的小地图中不在有精确定位的开关...但是如果info.plist中配置了NSLocationTemporaryUsageDescriptionDictionary,则仍可以申请临时的精确定位权限; -⚠️:测试期间使用Xcode12...:(CLLocationManager *)manager; -通过manager.authorizationStatus对象方法获取当前定位权限,此方法在iOS13及以前版本是类方法; -通过manager.accuracyAuthorization...代码中不能出现符号requestAlwaysAuthorization,否则上架审核不通过; -****Info.plist 中的字段总结**** | iOS版本 | NSLocationWhenInUseUsageDescription

1.6K20
  • iOS学习——UIView的研究

    在iOS开发中,我们知道有一个共同的基类——NSObject,但是对于界面视图而言,UIView是非常重要的一个类,UIView是很多视图控件的基类,因此,对于UIView的学习闲的非常有必要。...在iOS学习——iOS 整体框架及类继承框架图中列出了iOS中所有类的继承框架图,其中下面这张图就是iOS开发中的界面相关类的继承框架图。 ?...) 坐标空间协议UICoordinateSpace的定义,定义了坐标点(CGPoint)、坐标区域(CGRect)在两个view间的转换 UIView的主要方法和属性的定义 类方法 2个 初始化方法...:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(6_0); 611 612 /** 可以知道当前视图的布局是否会有歧义 */ 613 #if UIKIT_DEFINE_AS_PROPERTIES...:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(10_0); 628 629 /** 可以知道当前视图的布局是否会有歧义 */ 630 #if UIKIT_DEFINE_AS_PROPERTIES

    3.2K80

    掌握 SwiftUI 的 task 修饰器

    app 无法响应是由于当前 task 是在主线程上运行的,如果按照下文中的方法将 task 运行在后台线程之中,那么 app 将可以继续响应,但会在不显示日期文字的情况下,继续更新 date 变量,并且会在控制台持续输出...task 修饰器在视图中创建异步任务,除了方便使用基于 async/await 语法的 API 外,开发者也希望能够让这些任务运行在后台线程中,以减少主线程的负担。...那些没有特别声明需运行在某特定 actor 上的闭包,它们可以运行于任意地点( 任何的线程之中 )。...回到当前的问题,由于 View 协议限定了 body 属性必须运行于主线程中( 使用了 @MainActor 进行标注 ),因此,如果我们直接在 body 中为 task 修饰器添加闭包代码,那么该闭包只能运行于主线程中...已经将 async/await 特性向后移植至 iOS 13,但并没有在低版本的 SwiftUI 中提供 task 修饰器( 原生的 task 修饰器最低要求 iOS 15 )。

    2.6K30

    iOS 多线程-Thread

    ,在 start 之前我们可以给 Thread 属性进行一些设置。...} 继承 Thread Thread 可以进行继承,重写 main 方法,同时不需在 main 方法中调用父类 main 方法。...cancel 并没有真正的取消线程,只是打了一个标志(通过 isCancelled 方法可以获取到)。一般我们需要在进行大量操作前判断一下标志,避免线程已经被取消了,还运行一些计算的现象产生。...Thread 的常用属性 / 方法 介绍几个属性 / 方法 name:给线程命名,方便查找 stackSize:栈区大小,看看线程在栈区占了多大空间 isMainThread:是否是主线程,比较常用...qualityOfService:服务质量,一个枚举类型,iOS8.0 推出,为了取代优先级,在 GCD 中也有类型属性。

    1.1K20

    最新:iOS 13 适配

    颜色适配 iOS 13 之前 UIColor 只能表示一种颜色,从 iOS 13 开始 UIColor 是一个动态的颜色,它可以在 LightMode 和 DarkMode 拥有不同的颜色。...如何自己创建一个动态的 UIColor 上面我们说到系统提供了一些动态的颜色供我们使用,但是在正常开发中,系统提供的颜色肯定是不够用的,所以我们要自己创建动态颜色。...这个闭包返回一个 UITraitCollection 类,我们要用这个类的 userInterfaceStyle 属性。...在 iOS 13 下变成了一个动态颜色,但是 CGColor 仍然只能表示单一的颜色,所以当我们使用到 CGColor 的时候,我们就可以用上面的方法做适配。...当我们在一个普通的 controlle, view 上重写这个属性,只会影响当前的视图,不会影响前面的 controller 和后续 present 的 controller。

    3.4K50

    iOS小技能:设置状态栏背景颜色(图片)

    引言 设置状态栏背景颜色的解决方案: 使用新的API 【statusBarManager】 通过安全区域高度判断是否IphoneX之后的机型:if ([UIApplication sharedApplication...但是如果有状态是有透明或者半透明的效果,上面这个方法还是不能胜任,越透明越明显;经过一番查找,终于发现问题: 问题: 1、iOS 13之前,可以通过valueForKey 获取UIApplication...的statusBar,因为UIApplication是单例,因此,在iOS 12,通过: [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow...2、iOS 13之后,因为苹果不允许使用KVC的valueForKey访问私有属性。...(iOS 13.0, *)) { //iOS 13不允许使用valueForKey、setValue: forKey获取和设置私有属性; dispatch_once(&onceToken

    2.4K40

    掌握 SwiftUI 的 task 修饰器

    app 无法响应是由于当前 task 是在主线程上运行的,如果按照下文中的方法将 task 运行在后台线程之中,那么 app 将可以继续响应,但会在不显示日期文字的情况下,继续更新 date 变量,并且会在控制台持续输出...使用 task 修饰器在视图中创建异步任务,除了方便使用基于 async/await 语法的 API 外,开发者也希望能够让这些任务运行在后台线程中,以减少主线程的负担。...那些没有特别声明需运行在某特定 actor 上的闭包,它们可以运行于任意地点( 任何的线程之中 )。...回到当前的问题,由于 View 协议限定了 body 属性必须运行于主线程中( 使用了 @MainActor 进行标注 ),因此,如果我们直接在 body 中为 task 修饰器添加闭包代码,那么该闭包只能运行于主线程中...已经将 async/await 特性向后移植至 iOS 13,但并没有在低版本的 SwiftUI 中提供 task 修饰器( 原生的 task 修饰器最低要求 iOS 15 )。

    4K60

    Object-C中的黑魔法

    在任何可以使用const关键字的地方都可以使用__nullable和__nonnull,不过这两个关键字仅限于使用在指针类型上。...而在方法的声明中,我们还可以使用不带下划线的nullable和nonnull,如下所示: - (nullable id)itemWithName:(NSString * nonnull)name 在属性声明中...老代码在需要和swift混编时,在新的swift编译器下会给出一个警告。 nonnull不会影响性能。事实上,我们仍然可以在运行时去判断我们的对象是否为nil。...NS_ENUM_AVAILABLE_IOS 从单词的字面可以看出使用这个宏说明这个枚举开始IOS的版本 IOS版本如下 7_0 代表7.0的版本.用_替换 参数只有一个NS_ENUM_AVAILABLE_IOS...NS_CLASS_AVAILABLE_IOS 代表类开始的API 和上面说的类似 例子 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIApplication :

    1.4K10

    IOS学习——iphone X的适配

    首先,啥都不管,先在iPhone X上运行起来看看效果在说,运行之后出现的问题主要有如下几个: 屏幕尺寸还是6S上的尺寸大小,用  打印log确实如此 [[UIScreen mainScreen] bounds...广告页也基本上都可以按照这个尺寸来切图。   ...ExtendedLayoutIncludesOpaqueBars参数的含义是不透明的导航栏条下是否可以扩展,默认是NO,如果设为YES,则表示可以扩展,即可能会受到导航栏的影响,我们知道在iOS 11中导航栏的变化非常大...竟然过期了,在IOS 11下 APPLE推荐使用UIScrollView的contentInsetAdjustmentBehavior属性进行设置自动计算滚动视图的内容边距。 ...并且在iOS 11中如果没有重写header、footer的height和view函数,iOS 11中系统不会像之前那样自动调用。

    1.7K60

    揭秘 @available

    # 【引言】为什么开启本话题 从2017年开始,OC语言可以使用 @available 语法糖判断运行时的系统版本,该语法糖可以帮助我们去掉很多烦人的警告。...通过日志可以看到,clang 很“智能”的产出了一个⚠️。但实际上,我们已经判断运行时的版本号,该⚠️是完全不必要的。...在**编译**阶段,clang 在 AST 新增 `ObjCAvailabilityCheckExpr` 节点,该节点代表源码中的`@available(iOS 13.0, *)`, 根据 AST 产出...因为 Xcode 11 中附带的静态库 `libclang_rt.*.a`包含新的方法,自然而然的可以直接编译&链接&运行。...if (@available(iOS 3.0, *)) { [NSObject methodForIOS13]; } 实际上,上述代码会经过被编译器进行一个特殊优化,该优化检测到我们设置的运行时版本不会低于

    2.9K10

    iOS录屏框架ReplayKit的应用总结

    iOS录屏框架ReplayKit的应用总结       ReplayKit是iOS自带的一个屏幕录制的框架,其支持应用程序对当前应用内页面进行录屏,并将最终的视频保存到系统相册中。...ReplayKit在iOS 9之后引入,其接口简介,可以非常方便的为应用添加录屏功能。需要注意,在某些iOS 12系统上,开启录屏可能会失败(通常需要重启设备解决)。      ...在ReplayKit框架中,有两个非常重要的类,分别是RPScreenRecorder类与RPPreviewViewController类。...RPScreenRecorderDelegate协议中定义了一些回调方法,如下: // 停止录屏后的回调 iOS 10 之前使用 - (void)screenRecorder:(RPScreenRecorder...,这个控制器没有暴露太多的属性给开发者使用,其中预览模式可以选择分享模式或编辑模式,除此之外,其中还提供了一个代理协议给开发者进行使用,用来对用户的操作进行处理,如下: @protocol RPPreviewViewControllerDelegate

    3.6K30

    iOS对UIViewController生命周期和属性方法的解析

    ,将数据有条有理的展示在我们的View层上。...4:viewDidLoad方法是我们最常用的方法的,类中成员对象和变量的初始化我们都会放在这个方法中,在类创建后,无论视图的展现或消失,这个方法也是只会在将要布局时调用一次。...在iOS9中,UIViewController还增加了下面一个布尔值的属性,可以同来判断controller的view是否已经加载完成: @property(nullable, nonatomic, readonly...2、使用代码跳转Storyboard中的controller         我们除了在Storyboard中拉拉扯扯可以进行控制器的跳转外,我们也可以使用代码来跳转Storyboard中segue连接关系... sender:(nullable id)sender NS_AVAILABLE_IOS(5_0); 下面三个属性我们可以获取controller的nib文件名,其storyBoard和其Bundle:

    3.3K20

    iOS 中的定时器

    我们平时开发时,或多或少都会使用到定时器,今天我们来聊聊 iOS 中的定时器。...1、NSInvocation在 Swift 中已经被禁止使用了,所以一般很少使用,如果非得使用需要借助 OC 进行中转;2、Block方式是在 iOS 10 之后的,目的就是方便使用,并且避免了Target-Action...NSInvocation的禁止其实也会影响到 NSProxy 在 Swift 中的使用,在 OC 中,我们一般会采用继承 NSProxy中的方式实现一个弱代理来解决常见的循环引用问题,比如常用的YYKit...默认的时间宽容度是 0,但即使是 0,系统内部也会自动添加一个很小的宽容度。这个属性是起到什么作用呢?按照开发者文档上的说法,设置该属性可以起到省电和优化系统响应性的作用。...从上面代码中我们也可以看出来,CADisplayLink属性与方法比较少,使用起来也比较简单。

    1.5K20

    iOS 新创建项目中的SceneDelegate适配

    翻译解释: 在iOS 13(及以后版本)上,SceneDelegate将负责AppDelegate的某些功能。 最重要的是,window(窗口)的概念已被scene(场景)的概念所代替。...一个应用程序可以具有不止一个场景,而一个场景现在可以作为您应用程序的用户界面和内容的载体(背景)。...另外一种则是根据系统版本判断兼容 方法一:删除SceneDelegate 把AppDelegate中UISceneSession Lifecycle的两个代理方法删除,添加window属性,在application...13之后有些程序状态的处理要在SeceneDelegate中 首先在SceneDelegate中加入@available(iOS 13, *)的声明, 然后把AppDelgate中UISceneSession...Lifecycle的两个代理方法写到单独的Extension中,然后声明@avaiable(iOS 13, *), AppDelegate的启动方法中也需要修改,编译即可 // SceneDelegate.swift

    3.8K21

    深入剖析Auto Layout,分析iOS各版本新增特性

    label有10个point 使用API添加约束 使用NSLayoutConstraint类(最低支持iOS6)添加约束。...NSLayoutAttributeBaseline 属性 占位符,在与另一个约束的关系中没有用到某个属性时可以使用占位符 NSLayoutAttributeNotAnAttribute 关系 允许将属性通过等式和不等式相互关联...实践中碰到的非必现低配置机器崩溃bug分析 案例一 一个视图缺少高宽约束,在设置完了约束后执行layoutIfNeeded,然后设置宽高,这种情况在低配机器上可能会出现崩问题。...iOS7 NavigationBar,TabBar和ToolBar的translucent属性默认为YES,当前ViewController的高度是整个屏幕的高度,为了确保不被这些Bar覆盖可以在布局中使用...如果希望在iOS9之前的系统也能够使用Stack view可以用sunnyxx的FDStackViewhttps://github.com/forkingdog/FDStackView,利用运行时替换元素的方法来支持

    1.4K10
    领券