06 2021 档案
摘要:泛型:实质上就是不使用具体数据类型(例如 int、double、float 等),而是使用一种通用类型来进行程序设计的方法,该方法可以大规模的减少程序代码的编写量,让程序员可以集中精力用于业务逻辑的实现。 在OC中泛型通常用于以下情况: class MyContainer<T> { private
阅读全文
摘要:用过SwiftUI开发页面的同学,对@State的使用非常常见,它是用来监控属性值的变化,并通知SwiftUI更新页面的。 之前的文章中我已经介绍过@propertyWrapper的简单运用,不知道的同学,可以点击查看。 结合@propertyWrapper的运用,我们可以推断@State的实现原理
阅读全文
摘要:@propertyWrapper(属性包装器) 在swiftUI中大量使用了属性包装器,用来监控数据变化,从而更新UI的@State包装器等等。 通过@propertyWrapper注解,我们也可以实现自定义的属性包装,它可以应用在class、struct、enum类型上,下面我们通过struct来
阅读全文
摘要:@dynamicCallable与callAsFunction都是可以通过类型实例作为函数调用的实现方法。 @dynamicCallable实现方式,将此属性应用于类、结构、枚举或协议,以将该类型的实例视为可调用函数,你必须实现dynamicallyCall(withArguments:) 或dyn
阅读全文
摘要:在截取字符串时,有时我们需要考虑表情符字符,因为不同的表情符字符长度不一样,例如:😁的长度为2。 NSLog(@"length: %ld", @"😁".length); // 此处输出为:length: 2 NSLog(@"length: %ld", @"👴🏻".length); // 此处
阅读全文
摘要:让Xcode在编译时,提示相关如下标记警告: // TODO: 待完成的任务 // FIXME: 带修复的bug // ERROR: 错误信息 1、选中工程项目的target 2、选中Build Phases 3、添加Run Script,脚本内容如下: TAGS="TODO:|FIXME:" ER
阅读全文