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

唐巧的iOS技术博客选摘

NewsFourApp:一个模仿网易4.0新UI框架的开源项目。 《Objective-C Runtime》:因为OC是一门动态语言,所以它总是想办法把一些决定工作从编译连接推迟到运行时。...也就是说只有编译器是不够的,还需要一个运行时系统 (runtime system) 来执行编译后的代码。这就是 Objective-C Runtime 系统存在的意义,它是整个OC运行框架的一块基石。...作者分享了从头文件中获取到的一些信息。...本文详细介绍了一个 UIResponder 类提供的基本功能。 《实现一个 TODO 宏》:文章介绍了如何实现一个能产生编译器警告的 TODO 宏,用于在代码里做备忘。...》:来自苹果官方博客的文章,介绍了通过减少动态分发,来提高 Swift 程序的执行效率的办法。

3.3K60

使用 pod lib create 创建库

Objective-C或Swift 你问的第一个问题是你想要构建一个pod的语言。对于这两个选择,CocoaPods会将你的库设置为一个框架。...我们为您的测试框架提供了所有必要的包含和设置,MyLib-Tests.pch以便您不必将它们包含在每个文件中。...Objective-C的前缀 要结束Objective-C项目,我们想知道您的类前缀。这意味着我们可以使CocoaPods生成的所有类都适合您的样式,所有从Xcode内部生成的类都将以您的前缀开头。...我们知道Apple正在弃用前缀,但实际上它们仍然在Objective-C代码库中占有一席之地。 Pod Lib创建模板 随着问题的结束,我们运行pod install新创建的项目。...README.md - 降价中的默认README。 RemoveMe.swift/m - 单个文件以确保最初编译工作。

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

    Swift 周报 第三十二期

    “链接器集”机制是 Swift 已经在使用的一种方法:几乎任何类型的编译器发出的元数据都被放入二进制文件中专门命名的部分中,并给出固定布局的记录。...代码中到处都是这样的样板文件,最终肯定会弄错,当一天结束时,希望并假设在错误的等待最终潜入之前所做的事情,是为了 Actor 的方法在进行过程中不可调用,而 Actor 的其余部分则继续其业务。...讨论宏扩展后访问源代码[8] 当构建一个使用 SwiftSyntax 遍历 Swift 源代码的工具时,是否有一种直接的方法来遍历宏扩展后的源代码? 这是否需要通过尝试扩展每个源文件来手动完成?...正在构建的工具中,复制源文件并对其进行操作,但这是直接来自文件系统和预扩展的。具体来说,该工具会遍历有效的 .swift 文件并捕获符合给定协议的所有类型。...Swift 中的宏扩展基于语法的内存表示,这意味着无法在不手动执行扩展的情况下直接从源文件中检索扩展的代码。

    29830

    干货 | 一波N折的携程酒店Swift-Objc混编实践

    Swift模块编译时产生的头文件是放在build目录中的,而不是在源文件目录下,而我们的打包脚本只会在依赖项的源文件目录中搜索,所以在单独编译Objc库的时候就会找不到Swift头文件。...既然CI不支持在环境变量目录中去搜索头文件,那我们就把它从build目录中copy出来当源文件使用(需加入git做版本控制)。...} ${include_dir} # 去掉xxx-Swift.h 文件头部注释中的编译器的版本号 sed -i"" "s/^\/\/ Generated by Apple.*$/\/\/ Generated...,这时就必须要把这些头文件导入到Objective-C的umbrella header中,Swift 会通过这个文件看到所有你在 umbrella header 中公开暴露出来的头文件。...modulemap 中的内容是通过 module map 语言来实现的,module map 语言中有一些保留字,其中带umbrella关键字的header申明就叫做umbrella header,作用是可以把它所在目录下的所有头文件都包含进来

    1.5K31

    从预编译的角度理解Swift与Objective-C及混编机制

    @end 面对这种错误,你可能会说它是开发者自己的问题。 确实,通常我们都会在声明宏的时候带上固定的前缀来进行区分。但生活里总是有一些意外,不是么?...当开始编译 .m 文件时,如果需要 PCH 里已经编译过的内容,直接读取即可,无须再次编译。 虽然这种技术有一定的优势,但实际应用起来,还存在不少的问题。...的宏,将 Swift 与 Objective-C 中的两个类进行了关联。...当 Swift 和 Objective-C 文件在不同 Target 中,例如不同 Framework 中,不同类型文件的 API 寻找机制如下: ?...当 Swift 和 Objective-C 文件同时在一个 Target 中,例如同一 Framework 中,不同类型文件的 API 寻找机制如下: ?

    2.2K31

    苹果 AI 部分性能超过 GPT4 | Swift 周报 issue 59

    问题影响:对于使用 -warnings-as-errors 的项目,无法使用新的 Swift 6 编译器编译 Swift 5 代码。...4) 提议删除引用静态成员时对“Self.”的要求内容大概提议内容:建议移除在实例成员中引用静态成员时需要使用 Self. 前缀的要求。认为 Self. 前缀增加了代码噪音,不必要。...6) 提议放宽使用编译器生成的以 $ 为前缀的标识符作为闭包参数名称内容大概提案概述:建议放宽在闭包中使用编译器生成的$前缀标识符的限制,特别是因为当前的限制阻止了在展开宏时使用 MacroExpansionContext.makeUniqueName...Swift语法明确规定了$前缀标识符的使用,如:实际上,编译器仅在特定情况下禁止使用$前缀标识符。...在 SwiftUI 中引入 Entry 宏摘要: 文章介绍了 SwiftUI 框架中的新功能—— Entry 宏。

    15600

    Swift 周报 第四十三期

    周报精选 新闻和社区:iPhone 破发促销、印度市场寻增量,苹果再攀 3 万亿美元高点 提案:函数体 Macros 提案正在审查中 Swift 论坛:Swift 中引入函数体宏 推荐博文:在 SwiftUI...将 SDK 用作二进制文件依赖项时,也需要包含签名。此功能对于所有 App 来说都是向前迈出的重要一步,我们鼓励所有 SDK 采用这项功能,以更好地支持依赖于相应 SDK 的 App。...当使用encode()时,内部表示(例如Decimal类型)会出现在最终的JSON字符串中,这会让人感到惊讶,从而导致方法分派和类型编码的混乱。...推荐博文 从预编译的角度理解 Swift 与 Objective-C 及混编机制[13] 摘要: 这篇博客讨论了 Objective-C 的预编译工作机制和与 Xcode 相关的技术细节。...Clang Module 提升了编译的健壮性和扩展性,而使用 hmap 技术可以提高编译效率。 Xcode Phases 构建系统中的不同类型代表不同的文件。

    23610

    Swift 周报 第四十三期

    周报精选 新闻和社区:iPhone 破发促销、印度市场寻增量,苹果再攀 3 万亿美元高点 提案:函数体 Macros 提案正在审查中 Swift 论坛:Swift 中引入函数体宏 推荐博文:在 SwiftUI...将 SDK 用作二进制文件依赖项时,也需要包含签名。此功能对于所有 App 来说都是向前迈出的重要一步,我们鼓励所有 SDK 采用这项功能,以更好地支持依赖于相应 SDK 的 App。...当使用encode()时,内部表示(例如Decimal类型)会出现在最终的JSON字符串中,这会让人感到惊讶,从而导致方法分派和类型编码的混乱。...推荐博文 从预编译的角度理解 Swift 与 Objective-C 及混编机制[13] 摘要: 这篇博客讨论了 Objective-C 的预编译工作机制和与 Xcode 相关的技术细节。...Clang Module 提升了编译的健壮性和扩展性,而使用 hmap 技术可以提高编译效率。 Xcode Phases 构建系统中的不同类型代表不同的文件。

    22610

    Swift 是猴还是猿?

    LLVM,Chris Lattner在将主要精力转向Swift的研发上时,LLVM项目自身的存活与否已经不会有什么影响。...不再有宏定义,在Swift里面要实现宏定义,直接用let定义全局常量。如下: 类型推断特性 let和var定义简单值如果指定初始值则不再需要指定类型,不指定初始值则需要明确指定类型。...初始化时指定初始值时编译器会自动推断变量类型。 字符串插值参数打印 参数打印不再需要通过%加固定字符来指定打印格式,直接\反斜杠一对圆括号里面包含常量、变量、字面量和表达式即可。...比如: 当后面的人修改代码,或多人修改同一代码再合并时,可能会在if后面直接插入一行,这样就一定会return了。 Swift里面必须要有大括号。...五、Swift和Objective-C混用 Swift和Objective-C互调需要新建一个XXX-Bridging-Header.h文件做桥接,具体请参看稍后将会发的另外一篇文章(后续) 六、Swift4

    3.9K30

    Kotlin 1.4-M1 现已发布!

    请注意,当目标为新的 IR 编译器后端(更多详细信息如下) 时,produceExecutable() 会始终按目标生成一个单独的 .js 文件。 当前,不支持在多个生成的工件之间删除重复或拆分代码。...此标志的确切功能在本博文的 Both 模式部分中进行了介绍。此标志非常有必要,因为新的和默认编译器后端不兼容二进制文件。...在一些情况下,这可能会破坏调用 Kotlin 框架的现有 Objective-C 或 Swift 代码。要不使用泛型编写框架标头,请添加 -Xno-objc-generics 编译器选项。...在 Objective-C/Swift 互操作中处理异常的变更 在 1.4 中,针对转换异常的方式,我们将稍微变更从 Kotlin 生成的 Swift API。...编译为 Swift 或 Objective-C 框架时,拥有或要继承 @Throws 注解的函数在 Objective-C 中表示为产生方法的 NSError*,在 Swift 中表示为 throws

    3.5K20

    Swift 2023:所有权、宏和 C++ 互操作

    它是 Rust 最具有决定性的语言特征之一,是其提供内存安全保证的基础。 Rust 使用了第三种方法:内存是通过一个所有权系统来管理的,该系统有一套编译器检查规则。如果违反了任何规则,程序就不会编译。...Swift 中现有的一些功能可以实现为宏,如 Codable 协议、字符串插值、属性封装器和结果构建器。...虽然 Swift 宏的相关工作仍处于非常早期的阶段,但关于它们在 Swift 中应该是什么样子,人们已经有一些想法。...重写 Foundation 框架 Swift 团队已着手开始 Foundation 框架的一个新的开源实现。...为了规避这一限制,苹果在开源 Swift 时推出了 swift-corelibs-foundation,一个 Core Foundation 的 Swift 包装器,一个位于 Foundation 核心的底层

    1.4K10

    苹果推出 SwiftData,可替代 SwiftUI 的 Core Data

    在几年前通过 SwiftUI 改变了 UI 在其平台上的定义方式后,苹果正在迈出超越 Core Data 的第一步,即一个基于 ORM、严格绑定于 Objective-C 动态能力的持久化框架。...var ingredients: [Ingredient] } 仔细看能发现 SwiftData 是如何依赖 Swift 5.9 中新引入的宏功能。...SwiftData 中还提供对谓词(Predicate)定义的支持,可用于过滤数据。编译时对谓词进行检查,并对类型不匹配的问题报编译错误。...此外,SwiftData 模型也可通过 CloudKit 或以 iCloud 云盘中存储的文件形式进行跨设备同步。...为让开发者能更为轻松地迁移至 SwiftData,该框架支持在现有 Core Data 应用中的逐步采用,在苹果提供的演示项目中展示了如何在一个 Core Data 应用中仅部分使用 SwiftData

    1.5K30

    iPhone 16 或将配备可拆卸电池 | Swift 周报 issue 57

    周报精选新闻和社区:iPhone 16 或将配备可拆卸电池提案:DebugDescription 宏提案正在审查Swift 论坛:讨论 unless 关键字的优点推荐博文:使用 Swift 6 语言模式构建...总结:作者正在寻求一种更精确和灵活的方法来处理 Swift 并发中的隔离域和数据传递问题,特别是在处理遗留 Objective-C 代码时。7) 讨论为什么当保留计数非零时会调用“deinit”?...总结:这个问题揭示了 Swift 在处理存储属性和 copy 操作时的一个潜在 bug,特别是在涉及 Objective-C 运行时交互时。...推荐博文使用 Swift 6 语言模式构建 Swift 包摘要: 文章介绍了 Swift 6 引入了数据隔离和并发安全检查,这些功能需要在编译时显式启用 Swift 6 语言模式才能生效。...并通过展示了一个例子,演示了如何通过命令行或更新包清单文件来启用 Swift 6 语言模式。启用后,编译器可以检测并发问题,帮助开发者编写更安全、更高效的代码。

    12700

    Swift 周报 第三十三期

    周报精选 新闻和社区:App 内购买项目和订阅即将实行价格与税率调整 提案:将 conformance 宏作为 extension 宏 Swift 论坛:讨论 \ 和 $ 的意义 推荐博文:轻量化的 iOS...在此列表中包含内部导入以及支持导入 C 和 C++ 类型而不间接公开其 ABI 是否也有意义,以便允许包在内部使用 C++ 互操作而不要求依赖项了解它?...推荐博文 轻量化的 iOS 动画框架实现[8] 摘要: 在这篇博客中,介绍了日常开发中对视图进行动画处理的常见问题,并提供了一种解决方案。文章首先展示了普通的动画代码,并指出了其回调函数回溯的问题。...通过创建一个 Swift Package 来包含共享的字体文件和字体加载代码,可以加快新应用的发布速度,减少代码重复,并提供一个统一更新字体文件的地方。...结合 Swift Package 的可重用性和 Swift Package 插件的强大功能,甚至可以在构建时从字体文件自动生成所有必要的代码。本文使用 SwiftGen 来演示如何实现这一点。

    34220

    iOS_Objective-C编程规范

    例如:NSLocking 2.2 【必须】分类 分类名称前缀,表明分类属于哪个项目或模块,如NSString (GTMParsing) 分类的方法前缀,避免和系统库/其他项目/其他模块的方法名称冲突...(X)) // AVOID 对于 Xcode 生成的头文件,默认会生成以#define filename_h命名的宏来防止多重包含。...如果已经在文件头部详细描述了接口,可以直接说明 “完整的描述请参见文件头部”。 对外暴露的所有接口都应该有注释来解释它的作用、参数、返回值。 对外暴露的接口应该在注释中说明线程安全性。...4.5 【必须】使用轻量级泛型来记录容器的类型 // 使用 Xcode 7 及以上版本的所有项目都应该使用 Objective-C 轻量级泛型表示法来表明容器包含的对象。...建议在界面布局时使用相对布局,例如: 使用目标view在父view中的相对位置 使用目标view与相关view中的相对位置 使用目标view与相邻view中的相对位置 当访问一个 CGRect 的

    71220

    Swift和Objective-C混编在有赞移动的实践

    这样做的主要意义是: 语义上完整描述了一个框架的作用 提高编译时的可扩展性,同一模块只需编译或导入一次,避免了头文件的多次引用、解析 减少碎片化,每个模块只处理一次,环境的变化不会导致不一致 3.2 modulemap...文件 modulemap 文件就是对一个框架,一个库的所有文件的结构化描述。...配置将三方库构建成动态库时,在编译产物中都会生成一个 modulemap 和 module umbrella.h 文件 ? 可以在 Swift 文件这样引用该模块 ?...但是编译器是不允许在 Framework 中创建 Bridging-header,因此在二/三方库中,我们不能使用桥接文件的方式进行混编 Objective-C 代码的引用,需要用 Swift Module...在.mm 文件中,Objective-C 代码和 C++ 代码都可以正常编译运行。

    2.3K20

    Swift 周报 第十九期

    苹果汽车售价或低于 10 万美元,不支持完全自动驾驶 提案:Swift 选择加入 Reflection 元数据 Swift 论坛:使用较新的 macOS 版本生成 Package.swift 文件 推荐博文...Swift 的高级类型系统,最近增加了 move-only types,提供了一个新的机会来创建一个能够在编译时防止整个类错误的 Mach port 接口。...建议的解决方案: 添加一个新的 @globalConstructor 属性,该属性可以添加到顶级函数,以便在启动可执行文件或加载包含该函数的动态库时自动调用它们。...当他们添加诸如 swift-syntax 之类的具有更高最低支持版本的依赖项时,这可能是一种令人沮丧的新用户体验,导致他们必须立即弄清楚如何配置此选项。...使用 @objcImplementation,您可以像编写 Objective-C 类一样手写头文件,但不是在 Objective-C 中实现方法和属性,而是在 Swift 中实现它们。

    1.5K30

    runtime的那些事(二)——NSObject数据结构

    ,若是想要查看现行使用的 Modern 版本,则可以从 Apple开源项目链接 查看下载最新版本,写此文章时,runtime 最新版本为 objc4-750.1。...将上述类的各种信息仅用一个 uint 指针复合到一起表示,可以理解成是一个复合指针。 当按需取出各类不同那个信息时,通过以FAST_前缀开头的 flag 掩码对 bits 进行按位与操作。...关于其它的掩码宏定义,可去 runtime 源码中 objc-runtime-new.h 类文件的 372 - 525 行代码查看。...当_key与newKey内容不相等时,会将newKey赋值给_key。 在第3步执行前,先去执行了mega_barrier()宏定义,为什么要先执行该函数再去赋值_key?...runtime 类的运行逻辑:在编译时,类的方法、属性、协议等信息都存在于常量 class_ro_t 中,且无法再进行更改,这时class_data_bits_t中通过 data() 方法获取数据指向的是

    93420

    iOS开发常用之其他

    Xcode5插件简介开发写个自己的Xcode4插件 Xcode 4插件制作入门 :Xcode所使用的所有库都包含在Xcode.app/Contents/的框架,SharedFrameworks和OtherFrameworks...其中和Xcode关系最为直接以及最为重要的是框架中的IDEKit和IDEFoundation,以及SharedFrameworks中的DVTKit和DVTFoundation四个。...KSImageNamed - 自动完成,特别是如果你正在写Objective-C,如果Xcode能自动完成文件名难道不会很伟大吗?比如图像文件的名称。...颜色 - 打印彩色字符串,可以修改Swift中终端输出的字符串颜色,有趣的小工具。 蜡笔 - Xcode调色板增强插件。...searchcode -源代码搜索利器:来自悉尼的代码搜索引擎汇聚了Github上,到位桶,Sourceforge的......等多家开源站点超20万个项目,180亿行源代码,能以特殊字符,语言,仓库和源方式从

    1.9K20
    领券