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

HQ移动20170317期周报

Swift3.0使用NSNotification.name let kOpenXcodePathNotification = "kOpenXcodePathNotification" NotificationCenter.default.post...类方法,能不用就尽量不用,哈哈哈。...执行速度更快,IPA体积更小 ( 从 iOS 开发争议(一)得知) 感觉个人平常很少用成员变量,当然除了在 init 和 dealloc 、getter、setter 除外咯,其他地方例如临时生成一个...想了想,为了代码看起来规范性,我是不愿这样写。 但是细细想来,一些临时值确实没必要经过 setter 和 getter 方法,所以想着还是直接用 成员变量。...PS: 在 Block 对于成员变量一定要 使用 self-> _testName, 否则直接使用 _testName, 就算添加了 weakSelf/strongSelf 还是会有循环引用

49230
您找到你想要的搜索结果了吗?
是的
没有找到

Swift Actors 使用以如何及防止数据竞争

Swift Actors 旨在完全解决数据竞争问题,但重要是要明白,很可能还是会遇到数据竞争。本文将介绍 Actors 是如何工作,以及你如何在你项目中使用它们。 什么是 Actors?...SwiftActor几乎和类一样,但不支持继承。 不支持继承意味着不需要像便利初始化器和必要初始化器、重写、类成员或open和final语句等功能。...所有与同步访问有关逻辑都被隐藏在Swift标准库实现细节里。然而,最有趣部分发生在我们试图使用或读取任何可变属性和方法时候: Actors方法是隔离,以便同步访问。...没有数据竞争风险,因为在读取过程,它值不能从另一个线程改变。 然而,我们其他方法和属性会改变一个引用类型可变状态。为了防止数据竞争,需要同步访问,允许按顺序访问。...我们可以用nonisolated关键字标记我们方法,告诉 Swift编 译器我们方法没有访问任何隔离数据: extension ChickenFeeder { nonisolated func

2.5K10

深入了解 iOS 初始化

,在 Objective-C ,子类会直接继承父类所有的初始化方法 SwiftSwift ,初始化器规则严格且复杂,目的就是为了使代码更加安全,如果不符合规则,会直接报错,常常会让刚接手 Swift...• 在没有给所有非可选类型属性赋值(初始化完成)之前,不能调用self相关任何东西,例如:调用实例属性,调用实例方法。...必须重写旧定初始化器,在里面调用新指定初始化器 • 在 Swift ,初始化时候需要保证类(结构体、枚举)所有非可选类型属性都会有值 • 在 Swift ,必须在初始化完成后才能调用实例属性...,调用实例方法 • 在 Swift ,如果存在继承,并且子类有新非可选类型属性,或者无法保证所有非可选类型属性都已经有默认值,那么就需要新创建一个指定初始化器,或者重写父类指定初始化器,并且在里面调用父类指定初始化器...• 在 Swift ,子类如果没有新创建一个指定初始化器,并且没有重写父类指定初始化器,则会继承父类指定初始化器和便利初始化器 • 在 Swift ,子类如果新创建一个指定初始化器,或者重写了父类某个指定初始化器

97410

Swift-MVVM 简单演练(二)

Swift-MVVM 简单演练(一) Swift-MVVM 简单演练(三) Swift-MVVM 简单演练(四) 处理下拉刷新逻辑 根据接口文档,下拉刷新是返回ID比since_id大微博(即比since_id...设置为0,since_id设置成取微博数据第一条id 这里用三目运算就会很简单明了,swift如果能用三目判断,大家可以多用一下。...因为都是你自己微博下面的程序,所以拿到微博数据都是一样耽误你继续进行。 因此,我们需要处理一下,如果用户刷新数据为0条,刷新三次以后在上拉加载数据就不走网络请求方法。...确认加载用户文件代码位置 在HQNetWorkManager.swift,下面的代码逻辑是保证用户是否能拿到token也是登录成功与否关键。...而此时,如果进行强行guard let 守护,又是会有问题。直接爆红,提示你,守护必须是可选类型

2.3K40

iOS14开发-入门知识

开发语言 Swift 或者 Objective-C(本教程基于 Swift 5.x)。 开发者账号 个人 99 $/年 公司 99 $/年 企业 299 $/年 iOS系统四个层次 ?...Storyboard 界面与ViewController.swift之间联系(一个界面与一个类文件关联)。...tag:标记(Int 类型,默认等于0),设置后,可以通过所在容器View.viewWithTag方法拿到这个视图。 title:标题。 superview:父视图。 subviews:所有子视图。...有没有更加友好、更加直观、更加便捷、更加高效方法呢?答案是肯定,那就是 @IBOutlet 与 @IBAction。 @IBOutlet 写于类属性。...@IBAction 写于类方法。 与 Storyboard UIView 产生事件建立联系。 当相应事件发生时,方法就会被调用。

2.8K40

设计模式 - 命令模式&中介者模式&组合模式~AppDelegate 解耦

该转换让你能根据不同请求将方法参数化、延迟请求执行或将其放入队列,且能实现可撤销操作。 UML 命令模式URL图 实现方式 声明仅有一个执行方法命令接口。...在这些类添加保存命令成员变量。发送者只能通过命令接口与其命令进行交互。发送者自身通常并不创建命令对象,而是通过客户端代码获取。 修改发送者使其执行命令,而非直接将请求发送给接收者。...那这种方式弊端想必大家可以很明显看出来,上述代码示例只是把didFinishLaunch方法进行了解耦,对其他方法没有进行改造,如果对其他方法进行改造,也需要实现上述一套,会有些冗余。...对于AppDelegate而言,其内部不会再有任何业务上逻辑,并且因为协议默认实现,已经将任务默认分发到各个Leaf,其剩余任务仅仅就是提供Leaf列表,并且考虑到在组件化环境使用,直接引用各...关于AppDelegate解耦其实还有阿里BeeHive[5],不过其是一个综合组件化方案,AppDelegate事件分发只是其一部分。

55120

Object-C黑魔法

1.NS_ASSUME_NONNULL_BEGIN && NS_ASSUME_NONNULL_END 在Swift存在Option类型,也就是使用?和!声明变量。...但是OC里面没有这个特征,因为在XCODE6.3之后出现新关键词定义用于OC转SWIFT时候可以区分到底是什么类型 __nullable && ___nonnull __nullable指代对象可以为...而在方法声明,我们还可以使用不带下划线nullable和nonnull,如下所示: - (nullable id)itemWithName:(NSString * nonnull)name 在属性声明...不过,为了安全起见,苹果还制定了几条规则: typedef定义类型nullability特性通常依赖于上下文,即使是在Audited Regions,也不能假定它为nonnulla。...实际上,苹果已以帮我们处理好了这种兼容问题,我们可以安全地使用它们: 老代码仍然能正常工作, 即使对nonnull对象使用了nil也没有问题。

1.3K10

使用 Swift 提高代码质量

在这过程不断学习/实践,团队内Code Review,也对如何使用Swift来提高代码质量有更深理解。...模式匹配 - 通过模式匹配检测switch未处理case。 类型安全 强制类型转换 - 禁止隐式类型转换避免转换带来异常问题。同时类型转换不会带来额外运行时消耗。。...但是当do方法内String类型发生了改变函数,使用方并不知道已变更没有做相应适配,这时候就会造成业务逻辑错误。 提示:这类错误通常更难发现,这也是我们在一次真实bug场景遇到。...编码应当尽可能减小属性/方法/类型访问控制级别隐藏内部实现。 提示:同时也有利于编译器进行优化。...在这过程也会提高我们编码能力,加深对于一些通用编程概念/思想理解,包括空安全、值类型、协程、共享数据Actor并发模型、函数式编程、面向协议编程、内存所有权等。

4.6K30

Swift学习之5.3新特性

Swift 5.3 内置于 Xcode 12,新增了多项实用功能。 多尾随闭包 Swift 5.3 之前即使有多个尾随闭包也只有最后一个能被写成精简形式,这种写法一个闭包在圆括号内,另一个在外面。...新写法把这些闭包都放在圆括号外面,显得更加简洁。注意:尾随闭包第一个闭包标签会被强制省略。...var body: some Scene { WindowGroup { ContentView() } } } self改变 以前闭包引用当前范围内容时必须带上...,Swift 5.3 之后如果产生循环引用可以省略self.。这个新特性对 SwiftUI 来说非常友好,因为 SwiftUI View 保存在值类型结构体,所以不会发生循环引用。...oldValue(即使没有用到),从而影响性能。

54440

使用@MainActor自动在主线程更新UI

Swift 5.5 终于为开发者带来了async,await,actor这些便捷异步语法,而其中一个小小@MainActor语法,能带来让我们开发更加便捷安全。...@MainActor class UILabel: UIView @MainActor class UIViewController: UIResponder 也就是,在swift concurrency...系统,被@MainActor装饰过类,及其子类属性和方法,都会自动在主线程,get,set,或者call。...自定义UI class 假设,我们SwiftUI一个实现ObservableObject类,其中被@Published装饰属性需要自动运行在主线程。 我们只需要装饰@MainActor即可。...result = result } } } @MainActor 不会对Callback代码生效 @MainActor 必须使用在Swift async/await Concurrency环境

92210

swift4.0语法杂记(精简版)

五、可选类型 在Objective-C开发,如果一个变量暂时不会使用到,可以将它赋值为0或者赋值为空,而在swift,nil是一个特殊类型,如果它和真实类型匹配是不能进行赋值。...在前面的教程中提到过,不同类型值是不能直接运算。而可选项有两种值产生,若它值为nil则不能参加计算。 因此引入解包概念,“!”代表强制解包。它意思是从可选值强行获取对应非空值。...let resultArray = arrayM + array 九、swift集合 集合(Set)用来存储相同类型并且没有确定顺序值。...十七、枚举 1、定义 在swift,枚举使用是由enum关键字来创建枚举,枚举所有成员都放在一对大括号里面。它为一组相关值定义一个共同类型。使用case关键字来定义一个新枚举成员值。...因为它没有考虑到枚举类全部成员。如果说不需要匹配所有的枚举成员,可以提供一个default分支来涵盖其他未明确处理枚举成员

15.1K90

Swift接入腾讯位置服务地图SDK

前言 腾讯地图iOS SDK目前只提供了Objective-C版本SDK, 因此如果是Swift项目, 则需要自己通过Bridging文件来将其引入 使用场景 Swift项目接入腾讯地图 接入流程 1...、创建Swift项目, 本人采用是StoryBoard创建项目, 不过使用方法是一样: [33f2dfbc960a4957a6d8374ef692b4ca~tplv-k3u1fbpfcp-watermark.image...SRCROOT)为快捷指令, 可以直接识别项目的根路径): [3fbffac9f9f04cef960dee198d483780~tplv-k3u1fbpfcp-watermark.image] 如果编译没有出错...~tplv-k3u1fbpfcp-watermark.image] 5、编译通过的话就可以在BridgingHeader文件中导入Objective-C框架了: #ifndef TencentMapSwiftDemo_Bridging_header_h...apiKey = "我Key" return true } } 8、最后, 附加一段ViewController基本使用: import UIKit class

1.1K51

Swift-MVVM 简单演练(三)

将询问发送通知授权代码也抽取出来 在swiftextension是可以无限多个写,我们如果能将更多零碎方法抽取出来,放到extension中去。代码会清晰很多,也会方便管理很多。...---- 处理登录相关通知 Token为nil时测试 所有的网络请求都是基于token,如果没有token的话(虽然实际程序几乎不可能出现token = nil情况),我们应该使程序在当token...所以在登录成功但是没有执行完成回调时候去执行该方法获取用户个人信息是比较理想位置。 下面我这里并没有做网络请求交互获取token,只是模拟了一下而已。...上面说自动布局工作原理时候提到过 如果希望某些约束提前更新!...,再将按钮监听方法抽取到extension,只是暂时我自己习惯这样写而已。

2.5K30

Swift学习笔记(初始化过程)

像object- c中常用dictionary,array,string等,在swift中都是结构体类型。 2.swift,类和结构体在创建实例时,必须为所有存储型属性设置合适初始值。...4.结构体逐一成员构造函数 除了上面提到默认构造函数,swift,如果一个结构体属性申明时候没有设置默认值,也没有自定义构造函数,swift也会帮助结构体创建一个逐一成员构造函数。...5. 构造函数代理 所谓构造函数代理,指的是一个构造函数通过调用其他构造函数来完成部分初始化工作。下面分结值类型和类类型两种情况来介绍: 值类型:包括结构体和枚举。...最终,任意构造器链便利构造器可以有机会定制实例和使用self。 3.构造函数继承与重写 与object-c不同是,swift,子类对父类构造函数默认是继承,除非满足一定条件。...前面说到,swift中子类默认是继承父类构造函数,但是满足以下规则情况下,子类可以继承父类构造函数: 规则 1 如果子类没有定义任何指定构造器,它将自动继承所有父类指定构造器。

1.2K60

Apple Swift编程语言入门教程

(by gashero)感谢这些基础工作,才使得可以在Apple软件开发引入新编程语言。 Objective-C开发者会感到Swift似曾相识。...如果初始化值没有提供足够信息(或没有初始化值),可以在变量名后写类型,以冒号分隔。...构造范围则包含两个值。 5 函数与闭包 使用 func 声明一个函数。调用函数使用他名字加上小括号参数列表。使用 -> 分隔参数名字和返回值类型。...子类方法可以通过标记 override 重载超类实现,而没有 override 会被编译器看作是错误。编译器也会检查那些没有被重载方法。...注意上面引用Hearts成员两种方法:当赋值到 hearts 常量时,枚举成员 Suit.Hearts 通过全名引用,因为常量没有明确类型

2K30
领券