V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  XDDD  ›  全部回复第 2 页 / 共 5 页
回复总数  92
1  2  3  4  5  
2019-08-01 19:35:52 +08:00
回复了 xiangyuecn 创建的主题 程序员 学习 ios ( Swift ) 开发一个多礼拜的心得:入门到放弃
@finab

obj.description: 你想要获取某个值的字符串形式。
String(describing:obj): 你想要得到某个值的字符串描述。
"\(obj)": 你想要在 String 中插值。

插值是另一个概念,功能远比你看上去强大。你可以看看 SE-0228。了解一下目前 Swift 是怎么插值的。
2019-08-01 19:24:27 +08:00
回复了 xiangyuecn 创建的主题 程序员 学习 ios ( Swift ) 开发一个多礼拜的心得:入门到放弃
更正 #106:解决方案 2 是将 String 转换为 Character 数组。一次性支付 O(n) 的转换开销,以后可以在保证 Unicode 安全的前提下用整数类型以 O(1) 时间复杂度进行索引。

很多人在其它语言上的经验是使用 2 或 3,隐式付出了编码转换或 Unicode 安全的代价。而在 Swift 中,你需要显式支付这一开销。
2019-08-01 19:10:25 +08:00
回复了 xiangyuecn 创建的主题 程序员 学习 ios ( Swift ) 开发一个多礼拜的心得:入门到放弃
再说说被误解的最多的,String 的设计。其实很多人没有意识到,字符串及其索引的设计是一个不可能三角。以下三条在逻辑上互斥,不可能同时达到:
1. Unicode 安全(变长编码,字符组合)
2. 性能安全(以 O(1) 时间复杂度进行索引)
3. 类型安全(使用整数类型进行索引,而非 opaque 类型)

而 Swift 实现了以上三条的全部功能,怎么做到的:
1. 如果你需要以 O(1) 时间复杂度进行索引,请使用 String.Index。(抛弃了类型安全,需要用 opaque 类型来索引)
2. 如果你需要用整数类型进行索引,请手动移动下标。(不建议。抛弃了性能安全,需要 O(n) 时间复杂度)
3. 如果你需要用整数类型以 O(1) 时间复杂度进行索引,请使用 String.UTF8/16/32View。(抛弃了 Unicode 安全,直接操作码元)
2019-08-01 18:42:10 +08:00
回复了 xiangyuecn 创建的主题 程序员 学习 ios ( Swift ) 开发一个多礼拜的心得:入门到放弃
其实这是很正常的逻辑,哪个语言抛了 Exception,就要用那个语言来处理。如果 Objective-C++ 抛出了 C++ 的 std::exception,用 Objective-C 的 @try 是拿不到的,需要用 C++ 的 try (同样,try 也拿不到 NSException )。

可能是 Swift 对 Objective-C 的兼容做的太好了,让很多人混淆了这两种完全不同的错误 /异常机制。
2019-08-01 18:20:14 +08:00
回复了 xiangyuecn 创建的主题 程序员 学习 ios ( Swift ) 开发一个多礼拜的心得:入门到放弃
@xiangyuecn: @fvckDaybyte2 说的是异步错误( Error ),所以在回调中处理。

再重复一遍,Swift 没有 Exception,也不能处理 Exception。如果因为使用 Objective-C 而引入 Exception,需要在 Objective-C 中处理干净。
2019-08-01 18:12:21 +08:00
回复了 xiangyuecn 创建的主题 程序员 学习 ios ( Swift ) 开发一个多礼拜的心得:入门到放弃
@finab 我是从语义的角度说明如何用字符串描述一个值。语义在 Swift 中非常重要,有不止一种方法达到目的,但语义是不同的。

如果一个值有字符串的表示形式,它应当实现 CustomStringConvertible,同时你应当使用 description。如果一个值实现了 RawRepresentable 且 RawValue==String,用 rawValue 同样可以得到字符串值,且绝大部分情况下这两种方式得到的结果是相同的。但是你不应当混用这两个方法。它们做了完全不同的事,给出完全不同的结果,并且碰巧一样。
2019-07-31 20:22:52 +08:00
回复了 xiangyuecn 创建的主题 程序员 学习 ios ( Swift ) 开发一个多礼拜的心得:入门到放弃
关于 2:
你并不关心类的继承关系,你只关心一个 variable (而不仅是 object )可以做什么。这叫做 protocol,而非 abstract。abstract 是中了面向对象的毒。
2019-07-31 19:38:17 +08:00
回复了 xiangyuecn 创建的主题 程序员 学习 ios ( Swift ) 开发一个多礼拜的心得:入门到放弃
如果你发现有些设计难以理解 /不会使用,而又十分明显,是因为这些设计没有对 类型安全 /内存安全 /性能安全 /Unicode 安全 妥协。
2019-07-31 19:21:03 +08:00
回复了 xiangyuecn 创建的主题 程序员 学习 ios ( Swift ) 开发一个多礼拜的心得:入门到放弃
60 多楼了居然还没有人说出正确答案

4. 唯一正确的方法是使用 String(describing:obj)。对于实现了 CustomStringConvertible 的类,可以使用 obj.description
5. Swift 只有错误 Error,没有异常 Exception。如果你是指 Objective-C 中抛出的异常,你要记住,Objective-C 被设计为不可从异常中恢复,遇到异常应该直接崩溃,否则会漏内存。这不是 Swift 的锅。

对于字符串:Unicode-Safe 是一个极其强有力的承诺,你需要学习如何写出 Unicode-Safe 的程序,同时避免不必要的性能浪费。
2019-07-09 07:47:40 +08:00
回复了 Napy8811 创建的主题 iPhone 你说新 iPhone 怎么能做出那种设计。。
@netlous 是外观向功能的妥协,aka 形式追随功能
2019-05-09 01:27:52 +08:00
回复了 SunOddman 创建的主题 Apple UIKit 以某种方式移植到其他平台的可能性有多大?
@lizhuoli 个人明显感受到 Cocoa 比 UIKit 陈旧很多。但不认为“下一代 macOS 的官方 UI Framework 是在 UIKit 团队手里”。
当初我期待的就是借鉴 UIKit 的 UXKit。但是等到最后只得到了 Marzipan,即 UIKit for mac。Marzipan 应用程序跑在单独的容器中,不能视为系统 UI 库。
2018-10-08 12:32:14 +08:00
回复了 pljhonglu 创建的主题 Apple iOS 捷径 APP 可越过沙盒访问系统文件
甚至可以读 file:///etc/passwd,虽然没卵用
2018-07-06 22:52:35 +08:00
回复了 maemolee 创建的主题 MacBook Pro 时隔两年,来调查一下如今 V2er 们对于 Touch Bar 的态度
写了一个应用,可以在 TouchBar 上显示最近使用的程序,你们可以试一下: https://github.com/ddddxxx/TouchDock
2018-06-02 10:00:38 +08:00
回复了 wellCh4n 创建的主题 macOS Electron 的 TouchBar API 可以固定在 TouchBar 上吗?
不能吧,这个是私有 API。
@FaiChou 区别就是有没有侵入程序内部,比如直接读内存,修改程序本体等

我的立场很明确,开源作者不应该因为开源作品而受到任何形式的指责,除非代码有版权问题。

顺便感谢分享,已 star
2017-12-30 23:34:26 +08:00
回复了 heqet 创建的主题 MacBook Pro 请问各位买了带 bar 的 mbp 有什么奇特的用法吗?
2017-12-29 16:52:09 +08:00
回复了 XDDD 创建的主题 iPhone iPhone 6X 系列的电池到底在哪方面作出了妥协
@lucifer9 找不到电池体积数据,没办法计算比容量

@chengzhoukun 哪一条?既然你无法证明主观故意,我也无法反证,我们还是只讨论客观问题比较好。
2017-12-17 16:35:04 +08:00
回复了 XDDD 创建的主题 问与答 在目前的官方语境下, GFW 存在吗?
@misaka19000 摆到台面上,总比台下的小动作好。至少在官方语境下,中国是一个法制国家。
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1091 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 23:28 · PVG 07:28 · LAX 15:28 · JFK 18:28
Developed with CodeLauncher
♥ Do have faith in what you're doing.