首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在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-定位

属性可以认为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.2K20

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

2.7K80

掌握 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.2K30

iOS 多线程-Thread

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

90620

最新:iOS 13 适配

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

3.2K50

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

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

1.8K40

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.3K10

掌握 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 )。

3.5K60

IOS学习——iphone X适配

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

1.5K60

揭秘 @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.5K10

iOS录屏框架ReplayKit应用总结

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

3.2K30

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

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

2.9K20

iOS 定时器

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

1.2K20

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

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

1.2K10

iOS 新创建项目中SceneDelegate适配

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

2.8K21
领券