# OneV's Den > The blog of @onevcat. Writing about technology (mainly iOS), design, and life. > > onevcat 的博客,关于技术(主要是 iOS)、设计和生活。 ## 文章 - [通过 llms.txt 引导 AI 高效使用网站内容](https://onevcat.com/2025/04/llmtxt/index.html.md): 作为示例,本站也开始提供 llms.txt 和 llms-full.txt 的支持,可以参看下面的链接获取相关文件。 llms.txt llms-full.txt #AI #大模型 #llms-txt #SEO - [MCP 是什么,现状和未来](https://onevcat.com/2025/02/mcp/index.html.md): MCP (Model Context Protocol,模型上下文协议) 是由 Anthropic 在 2024 年底推出的一种开放协议,它通过提供一种标准化的接口,旨在通过标准化的接口实现大语言模型 (LLM) 与外部数据源及工具的无缝集成。 #AI #大模型 #mcp - [关于推理模型的一些误解和盲区](https://onevcat.com/2025/02/reasoning-model/index.html.md): DeepSeek 给国内带来的 AI 普及和升级还在持续,虽然对于 AI 从业者和一些一直关注前沿的科技工作者来说,不论是传统 LLM 还是推理模型都不是什么太新鲜的概念了,但是对于行业外的长辈和小辈,或者是专注点刚被吸引到 AI 的业内人士来说,DeepSeek,特别是 DeepSeek-R1 的出现和爆火,可能是他们第一次真正在生活和工作里认真地接触和使用 AI。 #AI #大模型 #推理模型 - [DeepSeek,大国竞争,以及国运](https://onevcat.com/2025/01/deepseek-ai/index.html.md): DeepSeek R1 的横空出世,如同在人工智能竞赛场中引爆了一颗中子弹,其冲击波正重塑着全球 AI 产业的权力版图。近期全球科技界围绕这一事件的讨论持续升温:从冯骥在社交媒体上将 R1 定义为 “国运级别的科技成果” 的激情宣言,到 OpenAI 与微软联合指控数据违规的博弈;从 nature 盛赞其“重新定义AI普惠化可能”的技术突破,到 Anthropic CEO 亲自撰文贬损其技术价值并鼓吹硬件禁运。这场多维度的攻防战,早已超越了单纯的技术讨论,而演变为一场围绕科技话语权的战略博弈。 #AI #大模型 #国际关系 #算法 - [2024 年终总结](https://onevcat.com/2024/12/2024-final/index.html.md): 去年因懒癌发作,没能写年终总结。事后回想,错失了一次宝贵的记录机会,实在懊悔。于是今年决定提早起笔,希望能趁着头脑中的理性还没被假期的欢愉冲散之前,能把一些有印象有意义的内容刻印下来,也方便今后某天心血来潮时能够回顾。 #年终总结 #书评 #物览 - [编译器,靠你了!使用类型改善状态设计](https://onevcat.com/2024/11/type-as-state/index.html.md): 在程序的开发和运行过程中,人往往是最不可靠的环节:一个不小心,逻辑错误(也就是 bug!)可能会悄然保留下来并进入最终的产品。与此相对,编译器要可靠得多。如果程序中存在错误,编译器通常会直接阻止生成产品。Swift 拥有非常强大的类型系统,通过它,我们可以尝试将一些运行时的逻辑“封装”到类型系统中,从而在编译期提前发现潜在的问题和错误。这种依靠类型系统来“保存”逻辑的设计方式可以称为类型状态。 #swift #开发者体验 #编程语言 #编译器 #内存管理 #编译器 - [逆流而上的设计 - Swift 所有权和 ~Copyable](https://onevcat.com/2024/11/noncopyable/index.html.md): 在 Rust 中,绝对安全和高效的内存使用得益于其独特的所有权(ownership)设计。七年前,Swift 团队发布了《所有权宣言》,以前瞻性的方式介绍了 Swift 中关于值的内存管理变化的一系列愿景。Swift 5.9 中(以和宣言里略微不同的语法)实现了这一愿景,引入了不可复制类型的标记 ~Copyable(non-copyable),以与 Rust 截然不同的(打补丁的)方式实现了更精确的所有权控制。在今年的 Swift 6 中,之前类型扩展(extension)和泛型(generic)不支持 ~Copyable 的不足也得到了解决,~Copyable 的可用性得到了提升。回顾 ~Copyable 及其设计,它为 Swift... #swift #开发者体验 #编程语言 #编译器 #内存管理 #编译器 - [Swift 6 适配的一些体会以及对现状的小吐槽](https://onevcat.com/2024/07/swift-6/index.html.md): 最近对手上的两三个项目进行了 Swift 6 的迁移,整体过程并不算顺利,颇有一种梦回 Swift 3 的感觉。不过,最终还是有所收获和心得。趁着记忆还新鲜,我想稍微总结一下。此外,针对目前社区里的一些声音,以及自己这些年的感受,我会在文章后半部分对 Swift 生态进行一些不太重要的小唠叨。 #swift #kingfisher #开发者体验 #编程语言 #编译器 - [SwiftLog 和 OSLog:选择、使用以及坑](https://onevcat.com/2024/04/swift-log/index.html.md): 如果你还在用 NSLog 或者 print 打 log,那也许这篇文章正适合你,可以帮你转型到新的 log 方式。如果你已经在使用 OSLog 的相关功能,那也许本文可以帮助你加深理解,以及找到一些“进阶”用法。 #swift #log #开发者体验 - [深入理解 Observation - 原理,back porting 和性能](https://onevcat.com/2023/08/observation-framework/index.html.md): SwiftUI 遵循 Single Source of Truth 的原则,只有修改 View 所订阅的状态,才能改变 view tree 并触发对 body 的重新求值,进而刷新 UI。最初发布时,SwiftUI 提供了 @State、@ObservedObject 和 @EnvironmentObject 等属性包装器进行状态管理。在... #swift #swiftui #状态管理 #兼容 #性能 - [一些关于开发的杂谈话题 - 测试](https://onevcat.com/2023/04/dev-talk-testing/index.html.md): 最近接手了一些陈旧项目的维护工作,需要把一部分质量很烂的代码进行重构甚至重写。在这个过程期间,我也有机会对一些开发中比较重要的而且通用的知识进行了一点重新的思考和整理,在这里想把它们用个两三篇文章,以杂谈的方式记录一下。这些内容在我刚入门程序开发的时候困扰过我一段时间,所以虽然可能对于已经有多年经验的大佬们用处不大,但是希望新入行的同学们能通过这些话题得到一些启发,如果能减少走弯路的时间,那就更好了。 #测试 #最佳实践 #随想 - [不知所谓的 2022 年终总结](https://onevcat.com/2022/12/2022-final/index.html.md): 其实随着年龄增长,总感觉最近每年都很平淡,也几乎没有什么肉眼可见的进步。再加上疫情到了第三年,自己又长期在宅工作,无形中少了许多和这个世界接触的机会,更让自己的思想越来越僵化死板。不知道是不是因为长年在日本这种国度的关系,从感觉上来说似乎这个世界固化住了。一种即视感萦绕在周围,自己却没有什么新思路,也找不到突破的方式。如何才能在这种情况下继续前进,想来应该会成为今后重要的课题。 #年终总结 #书评 #物览 - [Swift 正则速查手册](https://onevcat.com/2022/11/swift-regex/index.html.md): #swift #编程语言 #编译器 #正则表达式 - [Xcode 中使用 SPM 和 Build Configuration 的一些坑](https://onevcat.com/2022/10/spm-in-xcode/index.html.md): TL;DR #swift #xcode #spm #编译器 - [TCA - SwiftUI 的救星?(四)](https://onevcat.com/2022/05/tca-4/index.html.md): 这是一系列关于 TCA 文章的最后一篇。在系列中前面的几篇里,我们简述了 TCA 的最小 Feature 核心思想,并研究了绑定和环境值的处理,以及 Effect 角色和 Feature 组合的方式等话题。作为贯穿整个系列的示例 app,现在应该已经拥有一个可用的猜数字游戏了。这篇文章会综合运用之前的内容,来看看和 UI 以及日常操作更贴近的一些话题,比如如何用 TCA 的方式展示 List 并让结果可以被删除,如何处理导航以及 alert 弹窗等。... #swift #编程语言 #swiftui #tca #elm - [TCA - SwiftUI 的救星?(三)](https://onevcat.com/2022/03/tca-3/index.html.md): 在上一篇关于 TCA 的文章中,我们看到了绑定的工作方式以及 Environment 在管理依赖和提供易测试性时发挥的作用。在这篇文章中,我们会继续深入,来看看 TCA 中的两个重要话题:Effect 角色到底是什么,以及如何通过组合的方式来把多个小 Feature 组合在一起,形成更加复杂的 UI 结构。 #swift #编程语言 #swiftui #tca #elm - [2021 年终总结](https://onevcat.com/2021/12/2021-final/index.html.md): #年终总结 #照片 #书评 #物览 - [TCA - SwiftUI 的救星?(二)](https://onevcat.com/2021/12/tca-2/index.html.md): 在上一篇关于 TCA 的文章中,我们通过总览的方式看到了 TCA 中一个 Feature 的运作方式,并尝试实现了一个最小的 Feature 和它的测试。在这篇文章中,我们会继续深入,看看 TCA 中对 Binding 的处理,以及使用 Environment 来把依赖从 reducer 中解耦的方法。 #swift #编程语言 #swiftui #tca #elm - [TCA - SwiftUI 的救星?(一)](https://onevcat.com/2021/12/tca-1/index.html.md): 打算用几篇文章介绍一下 TCA (The Composable Architecture),这是一种看起来非常契合 SwiftUI 的架构方式。 #swift #编程语言 #swiftui #tca #elm - [Swift 结构化并发](https://onevcat.com/2021/09/structured-concurrency/index.html.md): 本文是我的新书《Swift 异步和并发》中的部分内容,介绍了关于 Swift 中结构化并发的相关概念。如果你对学习 Swift 并发的其他话题有兴趣,也许这本书可以作为参考读物。 #swift #编程语言 #并发 - [Swift 并发初步](https://onevcat.com/2021/07/swift-concurrency/index.html.md): 本文是我的新书《Swift 异步和并发》中第一章内容,主要从概览的方向上介绍了 Swift 5.5 中引入的 Swift 并发特性的使用方法。如果你对学习 Swift 并发有兴趣,也许可以作为参考读物。 #swift #编程语言 #并发 - [用树莓派打造一个超薄魔镜的简单教程](https://onevcat.com/2021/04/magicmirror/index.html.md): 本来买了一个树莓派打算架个 Nextcloud,实际弄好以后发现并不是很用得上。眼看新买的树莓派就要沦为吃灰大军中的一员,实在不甘心。正好家里有一面穿衣镜,趁机改造一下,做成了一个 Magic Mirror,最终效果如下。 #树莓派 #智能家居 #硬件 - [SwiftUI 中的 Text 插值和本地化 (下)](https://onevcat.com/2021/03/swiftui-text-2/index.html.md): 在上篇中,我们已经看到为什么 Text,或者更准确地说,LocalizedStringKey,可以接受 Image 和 Date,而不能接受 Bool 或者自定义的 Person 类型了。在这下篇中,让我们具体看看有哪些方法能让 Text 支持其他类型。 #swift #swiftui - [SwiftUI 中的 Text 插值和本地化 (上)](https://onevcat.com/2021/03/swiftui-text-1/index.html.md): Text 中的插值 #swift #swiftui - [关于 SwiftUI State 的一些细节](https://onevcat.com/2021/01/swiftui-state/index.html.md): 2021 年 9 月更新 在评论区里,@CrystDragon 指出原文章的部分内容已经在新版本 SwiftUI 中发生了变化。不过这也带来了另一方面更加让人迷惑的问题。因此我对部分内容进行了更新和额外说明,更新部分会作为评注内容写在相关原文的后面。 #swift #swiftui - [迟到的 2020 年终总结](https://onevcat.com/2021/01/2020-final/index.html.md): 岁月如梭,白驹过隙。年前就打算写的这篇 2020 年终总结,硬生生被拖成了 2021 的“去年回顾”。主要还是因为思前想后,觉得 2020 年实在太过特殊:在 2020 经历的事情,也许今后很长一段时间都不会再有;于是在 2020 总结的经验,似乎也很难运用于未来。不过就算如此,还是勉强写点儿什么,权当留个纪念吧。 #年终总结 #书评 #物览 - [使用 Property Wrapper 为 Codable 解码设定默认值](https://onevcat.com/2020/11/codable-default/index.html.md): 本文介绍了一个使用 Swift Codable 解码时难以设置默认值问题,并利用 Property Wrapper 给出了一种相对优雅的解决方式,来在 key 不存在时或者解码失败时,为某个属性设置默认值。这为编解码系统提供了更好的稳定性和可扩展性。最后,对 enum 类型在某些情况下是否胜任进行了简单讨论。 #swift #最佳实践 #api #codable - [Swift 中使用 Option Pattern 改善可选项的 API 设计](https://onevcat.com/2020/10/use-options-pattern/index.html.md): SwiftUI 中提供了很多“新颖”的 API 设计思路和 Swift 的使用方式,我们可以进行借鉴,并反过来使用到普通的 Swift 代码中。PreferenceKey 的处理方式就是其中之一:它通过 protocol 的方式,为子 view 们提供了一套模式,让它们能将自定义值以类型安全的方式,向上传到父 view 去。如果有机会,我会再专门介绍 PreferenceKey,但这种设计的模式其实和 UI 无关,在一般的 Swift 里,我们也能使用这种方法来改善... #swift #api #设计模式 - [Package.swift toolchain 版本的选择](https://onevcat.com/2020/09/swift-package-version/index.html.md): WWDC 2020 上 Swift Package Manager (SPM) 开始支持 Resource bundle 和 Binary Framework。对于 Package 的维护者来说,如果有需求,当然是应该尽快适配这些内容。首先要做的,就是将 Package.swift 中的 Swift Toolchain 版本改到最新的... #swift #spm #工具链 #最佳实践 #wwdc - [@StateObject 和 @ObservedObject 的区别和使用](https://onevcat.com/2020/06/stateobject/index.html.md): WWDC 2020 中,SwiftUI 迎来了非常多的变更。相比于 2019 年的初版,可以说 SwiftUI 达到了一个相对可用的状态。从这篇文章开始,我打算写几篇文章来介绍一些重要的变化和新追加的内容。如果你需要 SwiftUI 的入门和基本概念的材料,我参与的两本书籍《SwiftUI 与 Combine 编程》和《SwiftUI 编程思想》依然会是很好的选择。 #swift #swiftui #设计模式 #最佳实践 #状态管理 - [一些关于 App Clips 的笔记](https://onevcat.com/2020/06/first-look-app-clips/index.html.md): App clips 是今天 WWDC 上 iOS 14 的一个重要“卖点”,它提供了一种“即时使用”的方式,让用户可以在特定时间、特定场景,在不下载完整 app 的前提下,体验到你的 app 的核心功能。 #app clips #wwdc #用户体验 - [使用 protocol 和 callAsFunction 改进 Delegate](https://onevcat.com/2020/03/improve-delegate/index.html.md): 2018 年 3 月的时候我写过一篇在 Swift 中如何改进 Delegate Pattern 的文章,主要思想是用遮蔽变量 (shadow variable) 声明的方式,来保证 self 变量可以被常时地标记为 weak。本文中,为了保证没有看过原文的读者能处在同一频道,我会先 (再次) 简单介绍一下这种方法。然后,结合 Swift 5.2 的新特性提出一些小的改进方式。... #swift #设计模式 #最佳实践 #pop - [在 Combine 中实现自定义 Publisher](https://onevcat.com/2020/01/customize-publisher/index.html.md): 本文是对我的《SwiftUI 和 Combine 编程》书籍的补充,对一些虽然很重要,但和书中上下文内容相去略远,或者一些不太适合以书本的篇幅详细展开解释的内容进行了追加说明。如果你对 SwiftUI 和 Combine 的更多话题有兴趣的话,可以考虑参阅原书。 #combine #设计模式 - [2019 年终总结](https://onevcat.com/2019/12/2019-final/index.html.md): #年终总结 #照片 #书评 #物览 - [关于 Backpressure 和 Combine 中的处理](https://onevcat.com/2019/12/backpressure-in-combine/index.html.md): 本文是对我的《SwiftUI 和 Combine 编程》书籍的补充,对一些虽然很重要,但和书中上下文内容相去略远,或者一些不太适合以书本的篇幅详细展开解释的内容进行了追加说明。如果你对 SwiftUI 和 Combine 的更多话题有兴趣的话,可以考虑参阅原书。 #combine #设计模式 #用户体验 - [SwiftUI 的一些初步探索 (二)](https://onevcat.com/2019/06/swift-ui-firstlook-2/index.html.md): #swift #swiftui #wwdc - [SwiftUI 的一些初步探索 (一)](https://onevcat.com/2019/06/swift-ui-firstlook/index.html.md): #swift #swiftui #wwdc - [Swift ABI 稳定对我们到底意味着什么](https://onevcat.com/2019/02/swift-abi/index.html.md): Swift 社区最近最重大的新闻应该就是 ABI 稳定了。这个话题虽然已经讨论了有一阵子了,但随着 Xcode 10.2 beta 的迭代和 Swift 5 的 release 被提上日程,最终 Swift ABI 稳定能做到什么程度,我们开发者能做些什么,需要做些什么,就变成了一个重要的话题。Apple 在这个月接连发布了 ABI Stability and... #swift #abi #xcode #开发者体验 - [与 JOSE 战斗的日子 - 写给 iOS 开发者的密码学入门手册 (实践)](https://onevcat.com/2018/12/jose-3/index.html.md): #swift #jwt #jose #开发者体验 #密码学 #网络安全 - [与 JOSE 战斗的日子 - 写给 iOS 开发者的密码学入门手册 (理论)](https://onevcat.com/2018/12/jose-2/index.html.md): #swift #jwt #jose #开发者体验 #密码学 #网络安全 - [与 JOSE 战斗的日子 - 写给 iOS 开发者的密码学入门手册 (基础)](https://onevcat.com/2018/12/jose-1/index.html.md): #swift #jwt #jose #开发者体验 #密码学 #网络安全 - [我所使用的工具们](https://onevcat.com/2018/11/tools-i-am-using/index.html.md): 工欲善其事,必先利其器。作为创造者,合手的工具可以以倍速提高效率。对于程序员来说,特别是对于在 macOS 上做开发的程序员来说,我们有非常多的 app 选择。同时,也有很多朋友会好奇我日常做开发时都使用一些什么样的 app。趁这个机会整理一下自己所偏好使用的一些工具。 #工具 #开发者体验 #物览 #硬广 - [关于 Swift defer 的正确使用](https://onevcat.com/2018/11/defer/index.html.md): 其实这篇文章的缘起是由于在对 Kingfisher 做重构的时候,因为自己对 defer 的理解不够准确,导致了一个 bug。所以想藉由这篇文章探索一下 defer 这个关键字的一些 edge case。 #swift #最佳实践 #坑 - [Result<T> 还是 Result<T, E: Error>](https://onevcat.com/2018/10/swift-result-error/index.html.md): 我之前在专栏文章里曾经发布这篇文章,由于这个话题其实还是挺重要的,可以说代表了 Swift 今后发展的方向流派,所以即使和专栏文章内容有些重复,我还是想把它再贴到博客来。经过半年以后,自己对于这个问题也有了更多的实践和想法,所以同时也更新了一下。我没有直接改动原文,而是把新的想法和需要补充的说明,用类似这段话的引用的方式写在合适的上下文里。 #swift #最佳实践 #设计模式 #开发者体验 #编程语言 - [十年前的日记们](https://onevcat.com/2018/10/diary/index.html.md): 假如我有时光机 #照片 #日记 - [开发者所需要知道的 WWDC 2018 新特性](https://onevcat.com/2018/06/wwdc-2018/index.html.md): #wwdc #机器学习 #xcode #swift #siri - [关于 MVC 的一个常见的误用](https://onevcat.com/2018/05/mvc-wrong-use/index.html.md): 写在前面:ObjC 中国 (或者说我个人) 现在正和 objc.io 合作打造一本关于 app 架构的书籍。英文版本已经提前预售,书本身也进入了最后的 review 阶段。我们也将在第一时间进行本书中文版的工作,还请大家关注。 本文的内容也是有关 app 架构的一些思考,如果你对架构方面的话题有兴趣的话,我之前还写过一篇利用 reducer 的单向数据流动的函数式 View Controller 的文章可供参考。 #mvc #mvvm #设计模式 #api #uitableview #最佳实践 #状态管理 - [不同角度看问题 - 从 Codable 到 Swift 元编程](https://onevcat.com/2018/03/swift-meta/index.html.md): 最近开设了一个小专栏,用来记录日常开发时遇到的问题和解决方案,同时也会收藏一些学习时记录的笔记,随想等。其中一些长文 (包括本文) 会首发于专栏,之后再同步到博客这边。虽然现在的文章还不多,但是因为计划更新比较勤快,所以适当进行收费,也算是对自己写作的一种鼓励和鞭笞。欢迎感兴趣的同学进行订阅,谢谢~ #swift #设计模式 #元编程 #codable #mirror #代码生成 - [关于 Swift Error 的分类](https://onevcat.com/2017/10/swift-error-category/index.html.md): 在去年我应 IBM 编辑的邀请写过一篇关于 Swift 2 中 throws 的文章。现在回头看,Swift 2 其实是 Swift 语言发展的一个挺重要的节点:如果说 Swift 1 是一个更偏向于验证阶段的产品的话,Swift 2 中加入的特性为这门语言的基石进行了补足。在那篇文章里我们主要深入探索了新的 throw 关键字背后的事情,而同一时期其实 Swift... #swift #错误处理 #异常 #开发者体验 #最佳实践 - [单向数据流动的函数式 View Controller](https://onevcat.com/2017/07/state-based-viewcontroller/index.html.md): View Controller 向来是 MVC (Model-View-View Controller) 中最让人头疼的一环,MVC 架构本身并不复杂,但开发者很容易将大量代码扔到用于协调 View 和 Model 的 Controller 中。你不能说这是一种错误,因为 View Controller 所承担的本来就是胶水代码和业务逻辑的部分。但是,持续这样做必定将导致 Model View Controller... #mvc #开发者体验 #设计模式 #状态管理 - [开发者所需要知道的 iOS 11 SDK 新特性](https://onevcat.com/2017/06/ios-11-sdk/index.html.md): #wwdc #机器学习 #arkit #xcode #开发者体验 - [再看关于 Storyboard 的一些争论](https://onevcat.com/2017/04/storyboard-argue/index.html.md): 从 iOS 5 的时代 Apple 推出 Storyboard (以下简称 SB) 后,关于使用这种方式构建 UI 的争论就在 Cocoa 开发者社区里一直发生着。我在 2013 年写过一篇关于代码手写 UI,xib 和 SB 之间的取舍的文章。在四五年后的今天,SB... #开发者体验 #storyboard #xcode #最佳实践 #ui - [所有权宣言 - Swift 官方文章 Ownership Manifesto 译文评注版](https://onevcat.com/2017/02/ownership/index.html.md): Swift 团队最近在邮件列表里向社区发了一封邮件,讲述了关于内存所有权方面的一些未来的改变方向。作为上层 API 的使用者来说,我们可能并不需要了解背后所有的事实,但是 Apple 的这封邮件中对 Swift 的值和对象的内存管理进行了很全面的表述,一步步说明了前因后果。如果你想深入学习和了解 Swift 的话,这篇文章是非常棒的参考资料。我尝试翻译了一下全文,并且加上了一些自己的注解。虽然这篇文章比较长,但是如果你想要进阶 Swift 的话,不妨花时间通读全文 (甚至通读全文若干遍)。 #swift #开发者体验 #编程语言 - [使用邮件来进行信息管理,顺便介绍最近写的一个小 app - Mail Me](https://onevcat.com/2017/02/mailme-app/index.html.md): 距离上一次自己在 App Store 发布个人 app 已经过去了两年多了。这段时间里把精力主要都放在了公司项目和继续进一步的学习中,倒也在日常工作和出书等方面取得了一些进展。个人 app 这块近两年虽然有写一些便捷的效率类应用,但是几次审核都被 Apple 无情拒掉以后,也就安心弄成自用的小工具了。看着自己逐渐发霉的开发者证书,果然觉得还是找时间倒腾点什么比较好。于是就有了现在想要介绍给大家的这个工具,Mail Me - 一个可以帮助你快速给自己发送邮件的小 app。 #物览 #硬广 #生活方式 - [Swift 并发编程现状和展望 - async/await 和参与者模式](https://onevcat.com/2016/12/concurrency/index.html.md): 这篇文章不是针对当前版本 Swift 3 的,而是对预计于 2018 年发布的 Swift 5 的一些特性的猜想。如果两年后我还记得这篇文章,可能会回来更新一波。在此之前,请当作一篇对现代语言并发编程特性的不太严谨科普文来看待。 #swift #开发者体验 #编程语言 - [面向协议编程与 Cocoa 的邂逅 (下)](https://onevcat.com/2016/12/pop-cocoa-2/index.html.md): 本文是笔者在 MDCC 16 (移动开发者大会) 上 iOS 专场中的主题演讲的文字整理。您可以在这里找到演讲使用的 Keynote,部分示例代码可以在 MDCC 2016 的官方 repo 中找到。 #swift #开发者体验 #设计模式 #pop #讲稿 - [面向协议编程与 Cocoa 的邂逅 (上)](https://onevcat.com/2016/11/pop-cocoa-1/index.html.md): 本文是笔者在 MDCC 16 (移动开发者大会) 上 iOS 专场中的主题演讲的文字整理。您可以在这里找到演讲使用的 Keynote,部分示例代码可以在 MDCC 2016 的官方 repo 中找到。因为全部内容比较长,所以分成了上下两个部分,本文 (上) 主要介绍了一些理论方面的内容,包括面向对象编程存在的问题,面向协议的基本概念和决策模型等,下半部分主要展示了一些笔者日常使用面向协议思想和 Cocoa 开发结合的示例代码,并对其进行了一些解说。 #swift #开发者体验 #设计模式 #pop #讲稿 - [活久见的重构 - iOS 10 UserNotifications 框架解析](https://onevcat.com/2016/08/notification/index.html.md): TL;DR #开发者体验 #api #推送 #wwdc - [关于 iOS 10 中 ATS 的问题](https://onevcat.com/2016/06/ios-10-ats/index.html.md): #wwdc #开发者体验 #网络安全 - [开发者所需要知道的 iOS 10 SDK 新特性](https://onevcat.com/2016/06/ios-10-sdk/index.html.md): #wwdc #机器学习 #arkit #xcode #开发者体验 - [写给初次参加 WWDC 的开发者的简明攻略](https://onevcat.com/2016/04/first-wwdc/index.html.md): #wwdc #机器学习 #arkit #xcode #开发者体验 - [ObjC 中国的工作回顾和之后的计划](https://onevcat.com/2016/04/objccn-plan/index.html.md): 小时候因为成绩还算凑合,所以经常会被任命做个班干部什么的。其实这并不是一份很有意思的工作,除了上课要被老师重点“关照”点名起来回答问题以外,最烦人的事情就是开学要写工作计划,期末要写工作总结了。耗时耗力不说,写出来的东西也并不会有什么人看。 #objccn #物览 - [Swift 2 throws 全解析 - 从原理到实践](https://onevcat.com/2016/03/swift-throws/index.html.md): 本文最初于 2015 年 12 月发布在 IBM developerWorks 中国网站发表,其网址是 http://www.ibm.com/developerworks/cn/mobile/mo-cn-swift/index.html。如需转载请保留此行声明。 #swift #错误处理 #异常 #开发者体验 #最佳实践 - [Swift 性能探索和优化分析](https://onevcat.com/2016/02/swift-performance/index.html.md): #swift #性能 #编程语言 #最佳实践 - [如何打造一个让人愉快的框架](https://onevcat.com/2016/01/create-framework/index.html.md): 这是我在今年 1 月 10 日 @Swift 开发者大会 上演讲的文字稿。相关的视频还在制作中,没有到现场的朋友可以通过这个文字稿了解到这个 session 的内容。 #swift #开发者体验 #api #讲稿 - [写在 2015 的尾巴](https://onevcat.com/2015/12/2015-final/index.html.md): 上一次写类似年终总结的东西已经是大概快十年前的事情了,那时候还刚进大学,每天也就喜欢发一些无病呻吟的东西。回望之后,发现那些蹉跎掉的岁月确实无法再重新来过,不过也让我懂得了,幸好我们还能珍惜当下。 #年终总结 #照片 #物览 - [当 App Store 遇上电视,开发者的第四代 Apple TV 开箱体验](https://onevcat.com/2015/10/apple-tv/index.html.md): 引子 #照片 #物览 #tvOS - [WWDC15 Session笔记 - Xcode 7 UI 测试初窥](https://onevcat.com/2015/09/ui-testing/index.html.md): #wwdc #xcode #开发者体验 #测试 - [WWDC15 Session笔记 - 30 分钟开发一个简单的 watchOS 2 app](https://onevcat.com/2015/08/watchos2/index.html.md): Apple Watch 和 watchOS 第一代产品只允许用户在 iPhone 设备上进行计算,然后将结果传输到手表上进行显示。在这个框架下,手表充当的功能在很大程度上只是手机的另一块小一些的显示器。而在 watchOS 2 中,Apple 开放了在手表端直接进行计算的能力,一些之前无法完成的 app 现在也可以进行构建了。本文将通过一个很简单的天气 app 的例子,讲解一下 watchOS 2 中新引入的一些特性的使用方法。 #wwdc #watchOS #开发者体验 - [WWDC15 Session笔记 - iOS 9 多任务分屏要点](https://onevcat.com/2015/06/multitasking/index.html.md): 本文是我的 WWDC15 笔记中的一篇,涉及的 Session 有 #wwdc #iOS #多任务 - [开发者所需要知道的 iOS 9 SDK 新特性](https://onevcat.com/2015/06/ios9-sdk/index.html.md): #wwdc #多任务 - [Scheme 初步](https://onevcat.com/2015/05/scheme/index.html.md): 之前定了每年学习一门语言的目标,自然不能轻言放弃。今年目标:简单掌握 Scheme。 #scheme #编程语言 #函数式编程 - [跨平台开发时代的 (再次) 到来?](https://onevcat.com/2015/03/cross-platform/index.html.md): #跨平台 #技术概览 #javascript #大前端 - [Swift 中的指针使用](https://onevcat.com/2015/01/swift-pointer/index.html.md): Apple 期望在 Swift 中指针能够尽量减少登场几率,因此在 Swift 中指针被映射为了一个泛型类型,并且还比较抽象。这在一定程度上造成了在 Swift 中指针使用的困难,特别是对那些并不熟悉指针,也没有多少指针操作经验的开发者 (包括我自己也是) 来说,在 Swift 中使用指针确实是一个挑战。在这篇文章里,我希望能从最基本的使用开始,总结一下在 Swift 中使用指针的一些常见方式和场景。这篇文章假定你至少知道指针是什么,如果对指针本身的概念不太清楚的话,可以先看看这篇五分钟 C 指针教程 (或者它的中文版本),应该会很有帮助。 #swift #编程语言 - [Apple WatchKit 初探](https://onevcat.com/2014/11/watch-kit/index.html.md): #watchOS #api - [WWDC 2014 Session笔记 - 可视化开发,IB 的新时代](https://onevcat.com/2014/10/ib-customize-view/index.html.md): 本文是我的 WWDC 2014 笔记 中的一篇,涉及的 Session 有 #wwdc #storyboard #开发者体验 #xcode #ui - [偷得浮生半月闲](https://onevcat.com/2014/09/bye-kayac/index.html.md): #生活 #编程语言 - [WWDC 2014 Session笔记 - iOS 通知中心扩展制作入门](https://onevcat.com/2014/08/notification-today-widget/index.html.md): 本文是我的 WWDC 2014 笔记 中的一篇,涉及的 Session 有 #wwdc #扩展 #framework #用户体验 - [WWDC 2014 Session笔记 - iOS界面开发的大一统](https://onevcat.com/2014/07/ios-ui-unique/index.html.md): #wwdc #ui #最佳实践 #适配 #storyboard - [开发者所需要知道的 iOS8 SDK 新特性](https://onevcat.com/2014/07/developer-should-know-about-ios8/index.html.md): #wwdc #iOS #扩展 - [行走于 Swift 的世界中](https://onevcat.com/2014/06/walk-in-swift/index.html.md): 2014 年 7 月 13 日更新:根据 beta 3 的情况修正了文中过时的部分 #wwdc #swift #开发者体验 #编程语言 - [关于 Swift 的一点初步看法](https://onevcat.com/2014/06/my-opinion-about-swift/index.html.md): 虽然四点半就起床去排队等入场,结果还是只能坐在了蛮后面的位置看着大屏幕参加了今年的 Keynote。其实今年 OS X 和 iOS 的更新亮点都不少,但是显然风头和光芒都让横空出世的 Swift 给抢走了。这部分内容因为不是 NDA,所以可以提前说一说。 #wwdc #swift #开发者体验 #编程语言 - [近期随想和 WWDC 的计划](https://onevcat.com/2014/05/jin-qi-sui-xiang-he-wwdc-de-ji-hua/index.html.md): 最近的博文总是写技术,本来其实是打算将这里建设成技术成长与人文关怀并重的博客的,但是现在看来思考不足。在刚被每周七天每天 18 小时的魔鬼般的封闭开发连续虐待了三周之后,我基本达到了看一眼代码就想吐的地步。每天让我坚持下来的动力可能只剩 “过完这周就可以参加的 WWDC” 这一件事情了。于是觉得,现在是时候可以写一点技术无关的博文来舒缓舒缓心情了。 #wwdc #人生 #随想 - [Kiwi 使用进阶 Mock, Stub, 参数捕获和异步测试](https://onevcat.com/2014/05/kiwi-mock-stub-test/index.html.md): Kiwi 是 iOS 的一个行为驱动开发 (Behavior Driven Development, BDD) 的测试框架,我们在上一篇入门介绍中简单了解了一些 iOS 中测试的概念以及 Kiwi 的基本用法。其实 Kiwi 的强大远不止如此,它不仅包含了基本的期望和断言,也集成了一些相对高级的测试方法。在本篇中我们将在之前的基础上,来看看 Kiwi 的这些相对高级的用法,包括模拟对象 (mock),桩程序 (stub),参数捕获和异步测试等内容。这些方法都是在测试中会经常用到的,用来减少我们测试的难度的手段,特别是在耦合复杂的情况下的测试以及对于 UI... #xcode #objc #kiwi #开发者体验 #测试 #bdd - [苹果应用描述中不能使用特殊字符的对应方法](https://onevcat.com/2014/04/itc-special-characters/index.html.md): 该文章内容在iOS7中已经失效,请乖乖遵循苹果的规则写吧 #app store #用户体验 - [常见的后台实践](https://onevcat.com/2014/03/common-background-practices/index.html.md): 题外 #objc #多线程 #gcd #api - [TDD的iOS开发初步以及Kiwi使用入门](https://onevcat.com/2014/02/ios-test-with-kiwi/index.html.md): 测试驱动开发(Test Driven Development,以下简称TDD)是保证代码质量的不二法则,也是先进程序开发的共识。Apple一直致力于在iOS开发中集成更加方便和可用的测试,在Xcode 5中,新的IDE和SDK引入了XCTest来替代原来的SenTestingKit,并且取消了新建工程时的“包括单元测试”的可选项(同样待遇的还有使用ARC的可选项)。新工程将自动包含测试的target,并且相关框架也搭建完毕,可以说测试终于摆脱了iOS开发中“二等公民”的地位,现在已经变得和产品代码一样重要了。我相信每个工程师在完成自己的业务代码的同时,也有最基本的编写和维护相应的测试代码的义务,以保证自己的代码能够正确运行。更进一步,如果能够使用TDD来进行开发,不仅能保证代码运行的正确性,也有助于代码结构的安排和思考,有助于自身的不断提高。我在最开始进行开发时也曾对测试嗤之以鼻,但后来无数的惨痛教训让我明白那么多工程师痴迷于测试或者追求更完美的测试,是有其深刻含义的。如果您之前还没有开始为您的代码编写测试,我强烈建议,从今天开始,从现在开始(也许做不到的话,也请从下一个项目开始),编写测试,或者尝试一下TDD的开发方式。 #xcode #objc #kiwi #开发者体验 #测试 #bdd - [宏定义的黑魔法 - 宏菜鸟起飞手册](https://onevcat.com/2014/01/black-magic-in-macro/index.html.md): 宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行。而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多。但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加。如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的技能(虽然宏本身可能并不漂亮优雅XD)。但是因为宏定义对于很多人来说,并不像业务逻辑那样是每天会接触的东西。即使是能偶尔使用到一些宏,也更多的仅仅只停留在使用的层级,却并不会去探寻背后发生的事情。有一些开发者确实也有探寻的动力和意愿,但却在点开一个定义之后发现还有宏定义中还有其他无数定义,再加上满屏幕都是不同于平时的代码,既看不懂又不变色,于是乎心生烦恼,怒而回退。本文希望通过循序渐进的方式,通过几个例子来表述C系语言宏定义世界中的一些基本规则和技巧,从0开始,希望最后能让大家至少能看懂和还原一些相对复杂的宏。考虑到我自己现在objc使用的比较多,这个站点的读者应该也大多是使用objc的,所以有部分例子是选自objc,但是本文的大部分内容将是C系语言通用。 #宏 #开发者体验 #objc #c #编程语言 - [代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧](https://onevcat.com/2013/12/code-vs-xib-vs-storyboard/index.html.md): 最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面。iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关系。而随着iOS开发发展至今,可以说在UI制作上大家逐渐分化为了三种主要流派:使用代码手写UI及布局;使用单个xib文件组织viewController或者view;使用StoryBoard来通过单个或很少的几个(关于这点稍后会进行展开)文件构建全部UI。应该使用哪种方式来制作UI已经是iOS开发中亘古不变的争论话题了,或许永远不会有一个统一的结论。但是首先需要知道的是三种方式各有优劣,所以也各有自己最适用的场合,而不会有完全的孰优孰劣。对于初学iOS开发来说,一时间其实是很难判定最适合自己的UI架构方式的。在这篇文章里我希望能够通过自己的经验给出一些意见,以期能帮助入门者来挑选最适合自己应用场景的方案。对于老鸟的话,也不妨对照自己平日的使用习惯和运用场景,看看有没有可以改进或变化的地方。最后,因为我本人现在最习惯和喜欢的是用Interface Builder(之后简称IB)及xib来做UI,所以文末附上了一些IB使用时候的小技巧,算是做个总结。 #wwdc #storyboard #开发者体验 #xcode #ui - [iOS内购实现及测试Check List](https://onevcat.com/2013/11/ios-iap-checklist/index.html.md): 免费+应用内购买的模式已经被证明了是最有效的盈利模式,所以实现内购功能可能是很多开发者必做的工作和必备的技能了。但是鉴于内购这块坑不算少,另外因为sandbox测试所需要特定的配置也很多,所以对于经验不太多的开发者来说很容易就遇到各种问题,并且测试时出错Apple给出的也只有“Can not connect iTunes Store”或者”Invalid Product IDs”之类毫无价值的错误提示,并没有详细的错误说明,因此调试起来往往没有方向。有老前辈在这里整理过一个相对完整的check list了,但是因为年代已经稍微久远,所以内容上和现在的情况已经有一些出入。趁着在最近两个项目里做内购这块遇到的新问题,顺便在此基础上总结整理了一份比较新的中文Check list,希望能帮到后来人。 #内购 #xcode #app store #最佳实践 - [WWDC 2013 Session笔记 - iOS7中的ViewController切换](https://onevcat.com/2013/10/vc-transition-in-ios7/index.html.md): 这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览。本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS或邮件方式订阅本站,这样您将能在第一时间获取本站信息。 #wwdc #iOS #ui #转场 #动画 - [WWDC 2013 Session笔记 - iOS7中弹簧式列表的制作](https://onevcat.com/2013/09/spring-list-like-ios7-message/index.html.md): 这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览。本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS或邮件方式订阅本站,这样您将能在第一时间获取本站信息。 #wwdc #iOS #ui #动画 #table view - [猫都能学会的Unity3D Shader入门指南(二)](https://onevcat.com/2013/08/shader-tutorial-2/index.html.md): 关于本系列 #unity #shader #计算机图形 #渲染 - [WWDC 2013 Session笔记 - iOS7中的多任务](https://onevcat.com/2013/08/ios7-background-multitask/index.html.md): 这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览。本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS或邮件方式订阅本站,这样您将能在第一时间获取本站信息。 #wwdc #iOS #多任务 #用户体验 - [猫都能学会的Unity3D Shader入门指南(一)](https://onevcat.com/2013/07/shader-tutorial-1/index.html.md): 动机 #unity #shader #计算机图形 #渲染 - [近期做的两三事](https://onevcat.com/2013/07/what-i-did-recently/index.html.md): 夏日炎炎,无心睡眠。 #xcode #vvdocumenter #unity - [WWDC 2013 Session笔记 - SpriteKit快速入门和新时代iOS游戏开发指南](https://onevcat.com/2013/06/sprite-kit-start/index.html.md): 这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览。本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS或邮件方式订阅本站,这样您将能在第一时间获取本站信息。 #wwdc #spritekit #iOS #渲染 - [WWDC 2013 Session笔记 - UIKit Dynamics入门](https://onevcat.com/2013/06/uikit-dynamics-started/index.html.md): 这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览。本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS或邮件方式订阅本站,这样您将能在第一时间获取本站信息。 #wwdc #ui #iOS #动画 - [WWDC 2013 Session笔记 - Xcode5和ObjC新特性](https://onevcat.com/2013/06/new-in-xcode5-and-objc/index.html.md): 这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览。本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的理解合作。如果您觉得本站对您能有帮助,您可以使用RSS或邮件方式订阅本站,这样您将能在第一时间获取本站信息。 #wwdc #xcode #objc - [开发者所需要知道的iOS7 SDK新特性](https://onevcat.com/2013/06/developer-should-know-about-ios7/index.html.md): 春风又绿加州岸,物是人非又一年。WWDC 2013 keynote落下帷幕,新的iOS开发旅程也由此开启。在iOS7界面重大变革的背后,开发者们需要知道的又有哪些呢。同去年一样,我会先简单纵览地介绍iOS7中我个人认为开发者需要着重关注和学习的内容,之后再陆续对自己感兴趣章节进行探索。计划继承类似WWDC2012的笔记的形式,希望对国内开发者有所帮助。 #wwdc #xcode #objc #iOS #ui - [谈谈Objective-C的警告](https://onevcat.com/2013/05/talk-about-warning/index.html.md): 一个有节操的程序员会在乎自己的代码的警告,就像在乎饭碗边上有只死蟑螂那样。——@onevcat #wwdc #xcode #objc #最佳实践 #开发者体验 #编程语言 - [iOS中使用blend改变图片颜色](https://onevcat.com/2013/04/using-blending-in-ios/index.html.md): 最近对Core Animation和Core Graphics的内容东西比较感兴趣,自己之前也在这块相对薄弱,趁此机会也想补习一下这块的内容,所以之后几篇可能都会是对CA和CG学习的记录的文章。 #iOS #渲染 #计算机图形 - [上级向的十个iOS面试问题](https://onevcat.com/2013/04/ios-interview/index.html.md): 不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会。对于iOS和Mac开发来说,因为本事还算比较新,企业对于这方面的开发者需求也比较大,所以面试时的要求可能并不是很高,一般能知道一些Cocoa和OC的基本知识也就认为可以了。但是对于一个希望拥有技术力基础的企业的iOS或者Mac开发来说,两到三个顶尖的熟练技术人员,带领一些还较为初级的开发者,共同完成项目应该是比较常见的构成。 #面试 #objc #gcd - [两个人一起记账吧~ Our Money](https://onevcat.com/2013/04/our-money-app/index.html.md): 已下架 #硬广 - [赴日半年的一些杂感](https://onevcat.com/2013/04/half-year-in-japan/index.html.md): 来日本已经足足有半年了,在这半年里见识了许多,也经历了许多。学生生涯的结束和职场生涯的开始,在这样的转变中积极投入到新的生活中去,大概也算是自己努力的一种方式。今天到公司很早,有机会整理一下这半年的一些体会和感想吧。 #日本 #生活 - [MGTwitterEngine中Twitter API 1.1的使用](https://onevcat.com/2013/03/mgtwitterengine/index.html.md): 在iOS5中使用Twitter framework或者在iOS6中使用Social framework来完成Twitter的集成是非常简单和轻松的,但是如果应用要针对iOS5之前的系统版本,那么就不能使用iOS提供的框架了。一个比较常见也是使用最广泛的选择是MGTwitterEngine,比如PomodoroDo选择使用的就是该框架。 #twitter #api - [Xcode 4 插件制作入门](https://onevcat.com/2013/02/xcode-plugin/index.html.md): 本文欢迎转载,但烦请保留此行出处信息:https://onevcat.com/2013/02/xcode-plugin/ #xcode #插件 #开发者体验 - [Unity3D中暂停时的动画及粒子效果实现](https://onevcat.com/2013/01/do_not_pause_me/index.html.md): 暂停是游戏中经常出现的功能,而Unity3D中对于暂停的处理并不是很理想。一般的做法是将Time.timeScale设置为0。Unity的文档中对于这种情况有以下描述; #unity #插件 #粒子效果 #动画 - [Unity编译至Xcode工程后自动添加文件和库的方法](https://onevcat.com/2012/12/xuporter/index.html.md): 废话之前 #unity #xcode #自动化 - [Unity 3D中的内存管理](https://onevcat.com/2012/11/memory-in-unity3d/index.html.md): 本文欢迎转载,但烦请保留此行出处信息:https://www.onevcat.com/2012/11/memory-in-unity3d/ #unity #内存管理 - [Perl中JSON的解析和utf-8乱码的解决](https://onevcat.com/2012/10/perl-json-utf/index.html.md): 最近在做一个带有网络通讯和同步功能的app,需要自己写一些后台的东西。因为是半路入门,所以从事开发以来就没有做过后台相关的工作,属于绝对的小白菜鸟。而因为公司在入职前给新员工提过学习Perl的要求,所以还算是稍微看过一些。这次的后台也直接就用Perl来写了。 #perl #server #json #编码 - [WWDC 2012 Session笔记——202, 228, 232 AutoLayout(自动布局)入门](https://onevcat.com/2012/09/autoayout/index.html.md): 这是博主的WWDC2012笔记系列中的一篇,完整的笔记列表可以参看这里。如果您是首次来到本站,也许您会有兴趣通过RSS,或者通过页面左侧的邮件订阅的方式订阅本站。 #wwdc #autolayout #动画 #ui - [WWDC 2012 Session笔记——219 Advanced Collection Views and Building Custom Layouts](https://onevcat.com/2012/08/advanced-collection-view/index.html.md): 这是博主的WWDC2012笔记系列中的一篇,完整的笔记列表可以参看这里。如果您是首次来到本站,也许您会有兴趣通过RSS,或者通过页面左侧的邮件订阅的方式订阅本站。 #wwdc #collection view #布局 #ui - [学生时代的终焉](https://onevcat.com/2012/08/not-a-studen/index.html.md): 距离研究生毕业,已经过去一个月了。在毕业季的离愁和从学生身份的转变的怅惘渐渐淡去时,大概是时候对我的整个的大学生涯做一个小结了。很多事情的记忆已经在时间的冲蚀中变得模糊了,但是也有一些事情比其他的琐事更深地印刻在了记忆之中,也许简单的梳理和回忆,无法把这七年刻画的细致入微,但是作为轮廓的勾勒和回顾,却已然绰绰有余了。(写完之后终于发现又被写成标准流水账了,这个从小学开始的写作文的毛病在不写博客两个月之后再次复发了哎…) - [Pomodoro Do - 拖延症患者的福音](https://onevcat.com/2012/07/pomodoro-do/index.html.md): 已下架 #硬广 - [WWDC 2012 Session笔记——205 Introducing Collection Views](https://onevcat.com/2012/06/introducing-collection-views/index.html.md): 这是博主的WWDC2012笔记系列中的一篇,完整的笔记列表可以参看这里。如果您是首次来到本站,也许您会有兴趣通过RSS,或者通过页面左侧的邮件订阅的方式订阅本站。 #wwdc #collection view #布局 #ui - [WWDC 2012 Session笔记——405 Modern Objective-C](https://onevcat.com/2012/06/modern-objective-c/index.html.md): 这是博主的WWDC2012笔记系列中的一篇,完整的笔记列表可以参看这里。如果您是首次来到本站,也许您会有兴趣通过RSS,或者通过页面左侧的邮件订阅的方式订阅本站。 #wwdc #xcode #objc #最佳实践 #开发者体验 #编程语言 #arc - [WWDC 2012 Session笔记——200 What is new in Cocoa Touch](https://onevcat.com/2012/06/what-is-new-in-cocoa-touch/index.html.md): 这是博主的WWDC2012笔记系列中的一篇,完整的笔记列表可以参看这里。如果您是首次来到本站,也许您会有兴趣通过RSS,或者通过页面下方的邮件订阅的方式订阅本站。 #wwdc #xcode #iOS #table view - [开发者所需要知道的iOS6 SDK新特性](https://onevcat.com/2012/06/developer-should-know-about-ios6/index.html.md): iOS6 beta和相应的SDK已经放出了,WWDC2012要进入session环节了。iOS6无疑是这届WWDC的重点,在keynote上面对消费者展示了很多新鲜的特性,而之后的seesion对于开发者来说应该是更为重要。这里先大概把iOS6里新增的开发者可能用到的特性做个简单的整理。之后我也会挑一些自己感兴趣的session做一些整理和翻译工作,也算是对自己的一种锻炼吧~相关的笔记整理如下: #wwdc #iOS - [EURO 2012](https://onevcat.com/2012/06/euro2012/index.html.md): 又是一届欧洲杯。 #欧洲杯 #足球 - [手把手教你ARC——iOS/Mac开发ARC入门和使用](https://onevcat.com/2012/06/arc-hand-by-hand/index.html.md): #wwdc #xcode #objc #内存管理 #开发者体验 #编程语言 - [水清木华](https://onevcat.com/2012/05/tsinghua-photos/index.html.md): 七年时光,匆匆飞逝。入学之日还历历在目,离别之时却已悄然而来。我希望自己能挥一挥衣袖,不带走这里的一片云彩,但却留下自己青春的回忆。在这个偌大的园子里,有我的欢笑,有我的泪水,有我的努力。我相信所有清华学子在离别母校时,必定是依依不舍。但是,孩子总有离家之日,外面的舞台也必会更加精彩。 #清华 #照片 - [深入Objective-C的动态特性](https://onevcat.com/2012/04/objective-c-runtime/index.html.md): Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading)。 #xcode #objc #runtime #编程语言 - [AppCode,Objective-C IDE的另一选择](https://onevcat.com/2012/03/appcode/index.html.md): ###Xcode or AppCode #xcode #appcode #开发者体验 - [OpenCV 在 iOS 开发环境下的编译和配置](https://onevcat.com/2012/03/opencv-build-and-config/index.html.md): 转载本文请保留以下原作者信息: #iOS #opencv #计算机图形 - [符合iOS系统兼容性需求的方法](https://onevcat.com/2012/02/iosversion/index.html.md): 转载本文请保留以下原作者信息:原作:OneV’s Denhttps://onevcat.com/2012/02/iosversion/ #iOS #兼容性 #开发者体验 #xcode - [UIViewController的误用](https://onevcat.com/2012/02/uiviewcontroller/index.html.md): 转载本文请保留以下原作者信息:原作:OneV https://onevcat.com/2012/02/uiviewcontroller/ #iOS #最佳实践 - [再看曹操](https://onevcat.com/2012/01/caocao/index.html.md): 最近在看《苍天航路》,一部以曹操为主角正剧三国志漫画。我向来是对曹操这个人物有所感慨,并且有所敬畏的,在他六十六载的人生中,有着太多的波澜壮阔和起起伏伏。而在后世,人们对这样一个伟人的人生的争论似乎从未停止。三国演义引导了尊刘贬曹中国基调,而日本更倾向于把曹操解读为苍天的霸者。这很大程度上反应了两国国民的心态差别:一个同情弱小,一个崇尚强大。在那个战火纷飞,英杰辈出的年代,孟德的谋略的高度是毋庸置疑的,而对于天下来说,他也是当时唯一一个敢于背负恶名而生存的人,只此一点,就比其他在那乱世之中只顾保全名节的所谓的“高士”高出许多。 #曹操 #历史 - [TestFlight——完美的iOS app测试方案](https://onevcat.com/2012/01/testflight/index.html.md): 转载本文请保留以下原作者信息:原作:onevcat http://www.onevcat.com/2012/01/testflight/ #iOS #testflight #测试 #app store - [AHRP 2013 内部推荐机会](https://onevcat.com/2012/01/ahrp2012/index.html.md): 2013秋季项目内推已经结束。如果打算参加的话,可以关注9月份陆续开始的宣讲会和AHRP官方网站的一些信息。谢谢大家对AHRP项目和我的blog的关注~ #arhp #面试 #日本 - [VVBorderTimer](https://onevcat.com/2011/12/vvbordertimer/index.html.md): GitHub 链接: https://github.com/onevcat/VVBorderTimerView #iOS #ui #控件 - [凑热闹,谈密码,Challenge-Response密码验证](https://onevcat.com/2011/12/password/index.html.md): CSDN的密码事件闹得沸沸扬扬,600万用户数据的泄露应该是中国互联网历史上最严重的帐号信息泄露事件。让人不可思议的是,2009年4月之前的用户密码居然是以明文存储。使用明文存储密码本身就是一件相当扯淡的事情,而当这种事情发生在以程序员为主要客户的大型网站上,真是让人哭笑不得。 #密码学 #网络安全 - [带边框的UIImage缩放](https://onevcat.com/2011/12/uiimage/index.html.md): 一个带边框的UIImage如果使用常规的缩放,边框部分将被按照缩放比例拉伸或压缩,有些时候这并不是我们所期望的..比如这个边框是根据图片大小变化的外框。比如下面的类似按钮的不明物体图片:主体为渐变蓝色,边框为外圈白色,灰色底板为背景。 #wwdc #iOS #uiimage - [直到我膝盖中了一箭...](https://onevcat.com/2011/12/skyrim/index.html.md): 这句话就这么火了。其实通宵等了一夜天际,但是之后却一直没有大块时间,所以至今主线还没有玩完,今年之内估计也是没有机会完结了。在2011年各种组织评选年度游戏之前,我想我得为老滚5写点什么。 #上古卷轴 #游戏 - [Log的艺术,顺带赞NSLogger](https://onevcat.com/2011/12/nslogger/index.html.md): 写代码易,调程序难。不论是多么资深的程序员,都不可能在毛线球一般的代码中弄清到底发生了什么,特别是当在程序在N多个线程中来回跳转和涉及到难以理解的内存操作的时候,我们不可避免地需要log的帮助来整理思路,确认到底发生了什么。而这时候,输出log的好坏和时机,往往决定了花在调试上的时间。 #log #xcode #开发者体验 - [别了,耐萨里奥](https://onevcat.com/2011/12/neltharion/index.html.md): 耐萨里奥,艾泽拉斯最强大的生物之一,受到泰坦祝福的大地守护者,黑龙领袖。他一直是睿智、高贵、沉着和强大力量的象征。在燃烧军团第一次入侵时,他率领了五色巨龙军团协助暗夜精灵抗击恶魔。也正是那时,他提议五大龙族领袖将力量注入巨龙之魂中,以抵抗军团。而不幸的是,在无数恶魔的萦绕下,在无尽的战斗中,在古老邪神的诱惑下,他癫狂了——他的身体一块块裂开,赤红的火焰从身体的裂缝中喷涌出来,他调转龙头,赶走了其他四色巨龙领袖。正是从此刻开始,他有了一个新的名字,死亡之翼。 #游戏 #wow - [Objective-C中的Debug表达式](https://onevcat.com/2011/12/debug-2/index.html.md): 有程序的地方就有bug,有bug的地方就需要debug。对于程序员来说,coding的过程便是制造bug和解决bug。Objective定义了不少表达式来协助debug的流程,将这些表达式用在NSLog中,可以简化部分工作,快速定义到debug的部分。 比如以下代码: #objc #debug #logger #xcode - [关于 NSURL 的解析和编码](https://onevcat.com/2011/11/nsurl/index.html.md): NSURL毫无疑问是常用类,有时候我们需要对一个url进行分析整理,当然是可以按照RFC 1808的定义去自己分析,但是万能的Apple大大已经在SDK里扔了不少方法来帮助解析一个url了…方便又快捷呐~比如下面的输入: #objc #编码 - [Xcode4.2的debug小技巧](https://onevcat.com/2011/11/debug/index.html.md): GNU Debugger(gdb)一直是UNIX下最为流行的调试器,而在Cocoa框架中也一直被作为默认的调试工具。在gcc都被LLVM取代了的如今,gdb还是作为默认调试器,更可见其优秀特性。 #objc #debug #logger #xcode - [尘埃落定,下一站Kayac](https://onevcat.com/2011/11/kayac/index.html.md): AHRP2012秋季项目已经结束,春季项目博主可以以内定者的身份进行内推,具体可以参看这篇帖子。 #arhp #面试 #日本 - [难得的休假](https://onevcat.com/2011/11/rest/index.html.md): 海南是个不错的地方,十多年前来就很不错,现在的话貌似也还行。难得能在这种忙得死人的时候能拿出三天时间跑到海南放松一下…刚做完一个会议报告就被大家围着提问,十分钟的演讲,提问居然持续了十五分钟,这不是明摆着坑我么…看来之前的准备还是过于浅显了。下次有这样的会议报告的话一定努力做得让大家看不懂才行。 #生活 - [Objective-C中的Block](https://onevcat.com/2011/11/objc-block/index.html.md): 技术是需要沉淀的。接触iOS开发也有大半年时间了,从一开始的纯白到现在自我感觉略懂一点,其实进步是明显的。无数牛人表示技术博是完成菜鸟到高手蜕变的途径之一,虽然这个博客并非是为技术而生,但是也许作为工科背景下的我来说,每天都写文艺的东西显然并不现实。于是就有了这个集子:能工巧匠集。用这篇开篇, #objc #block #编程语言 - [近期求职总结-AHRP和DeNA面试](https://onevcat.com/2011/10/seeking-job/index.html.md): AHRP2012秋季项目已经结束,春季项目博主可以以内定者的身份进行内推,具体可以参看这篇帖子。 #arhp #面试 - [Xcode4.2,想说爱你不容易](https://onevcat.com/2011/10/xcode4/index.html.md): 随着iOS5,最终还是在一个项目结束之前就被迫换到XCode4.2了。XCode4初出的时候就有无数先辈惨死在无尽的bug和极度不适中,而我选择了在一段时间的4.1和3.2.6共存的过渡期后再完全转到新版本下继续工作,现在看来是非常明智的。 #xcode - [潘达利亚,你好](https://onevcat.com/2011/10/pandaria/index.html.md): 因为一直忙着找工作,最近对各种消息新闻的关注很少。早上起来难得有时间看看新闻,发现BlizzCon2011最终还是没有让人失望,一年一部的WOW资料片又被推上了前台。潘达利亚之雾(Mists of Pandaria)的背后,熊猫人最终还是被BLZ作为填充新作空白期的大菜呈递了出来。虽说整个WOW主线和熊猫人其实没有什么关系,但是作为War3的重要英雄之一,熊猫人的出现倒也还算是合情合理吧。 #游戏 #wow - [求职季](https://onevcat.com/2011/10/zhaopin/index.html.md): 又到了一年一度的求职季~招人者基本年年不变,求职者换了一批又一批。年复一年,却也正见证了这个社会的新陈代谢。简历已经扔出去一些了,但是事实上特别满意的或者特别想要拿到的职位并不多..也许是因为这么多年书读出来,已然迷失了自己,我现在很难安静下来询问自己的内心:你想做什么,你能做什么?往往一思考到这个问题,我就选择逃避..我会告诉自己,我想要的很简单,安静恬逸的小生活而已——虽然我知道这不是真的,这只是我多年前的梦想罢了… #面试 - [乔帮主,一路走好](https://onevcat.com/2011/10/iphone/index.html.md): 一个时代的终结,意味着另一个时代的开始。一个巨匠的陨落,代表着一颗新星的诞生。1642年伽利略带着“追求科学需要特殊的勇气”,以自己的溘然辞世宣告了旧时代的终焉。一年之后,牛顿呱呱坠地,预告了新的物理学时代的开幕。当世之时,乔布斯所代表的便是对旧秩序的挑战以及对完美创新的不懈追求。 #乔布斯 - [麦克基满塞](https://onevcat.com/2011/10/mai-ke-ji-man-sai/index.html.md): 出游总是会看到新的东西,总是会给人带来惊喜,总是能令你开阔眼界。我素来知道中国的山寨事业一直兴旺发达,但是今天在长沙汽车站看到的这家店确实震惊了…名字霸气就不说了,以前类似的店 面也就记得有个“麦肯基”,如今连德克士也不能幸免了~关键在于,这家店的位置好的出奇.就紧靠汽车站大门..走过路过完全没有可能错过啊…嗯,当然 边上也还是有传统的车站餐馆K记,不过悲剧的是正牌K记被挤到了一条街之外。 嗯…这家店边上嘛,貌似附送了一家传说中的阿迪王…长沙是个蛮囧的地方..至少汽车站感觉是这样的 =_=~祝我旅途愉快吧..吼吼 #旅游 - [乱世之秋](https://onevcat.com/2011/09/luan-shi-zhi-qiu/index.html.md): 这是和平的年代,没有世界大战,也没有美苏争霸。这是混乱的时代,到处政治动乱,左右都是纷争。利比亚战乱尚未平息,也门又掀乱局。利益分配的戏码今年唱罢明年再演,丝毫没有新意..只是中国在这场利益分配的游戏中貌似永远拿不到自己的那份蛋糕,真不知是可歌可泣还是可悲可叹。 - [Windows Slate,整装待发](https://onevcat.com/2011/09/windows-slatezheng-zhuang-dai-fa/index.html.md): 决定稍微晚睡一两小时,看看传说中的Win8到底是什么德行。接近发布的最后时刻,一直神秘的Win8终于决定了真正的名字——Slate…唔,确实总是不能叫做WinPad的吧… - [十年](https://onevcat.com/2011/09/shi-nian/index.html.md): 倏忽之间,十年已逝。于一个历史事件而言,十年时间也许还不足以给出公允的评判;但于生者或逝者而言,却已然是应当忘怀的时候了。纵然一个国家的政府有再大的过错,但是国家的人民永远是无辜的。在这样的时刻,惟有为逝者哀悼,为生者祈福。 - [搬家](https://onevcat.com/2011/09/ban-jia/index.html.md): 最早开博于新浪,大概已经是六七年前的事情了吧。 ## 可选资源 - [分类](https://onevcat.com/tabs/categories/): 文章分类 - [标签](https://onevcat.com/tabs/tags/): 所有文章标签 - [归档](https://onevcat.com/tabs/archives/): 文章归档列表 - [关于](https://onevcat.com/about/): 关于我