|
|
1
5
Objective-C的动态消息传递更像Python或Ruby等动态语言。在这些语言中,标准范例通常被称为“duck typing”。换句话说,如果对象实例像鸭子一样嘎嘎作响(即响应您发送的消息),它就是鸭子。在Objective-C中,可以在运行时通过对象继承层次结构之外的许多机制添加方法。因此,询问实例是否响应特定选择器更为常见:
|
|
|
2
2
这似乎是避免检查从集合中获取的对象类型的“Objective-C方法”。当然,这是否好还有争议,但我认为这是一个总主题的一部分,即更愿意考虑对象响应的消息,而不是对象本身。
这方面的一个例子是
|
|
3
0
我想说Objective-C中的模式是在一个容器中只存储一种类型的对象—而且您几乎总是可以确定容器中要存储什么。这就是为什么在实践中很少有人真正花时间检查收藏的内容。当我确实想验证某个东西时,我通常使用isKindOfClass:和一个正确类型的对象来保存集合中的一个项。 如果您真的出于某种原因关心类型化,那么创建一个包装类来实现objectAtIndex:和其他常见的NSArray方法的类型化版本是非常容易的—注意,我不是在讨论NSArray的子类或任何其他集合,只是一个具有类似消息名称的对象。这类东西可以是很多用途的一个插件,您可以随时添加一个fall-through方法来访问backing集合。但我认为这比它的价值要麻烦得多,并且远离了语言。 在实践中,在许多应用程序中,我几乎从未看到“数组中对象类型错误”会成为一个问题。 对于一个接受typeID参数的方法,我更倾向于在使用前检查类型,因为这些方法倾向于接受范围更广的对象。 |
|
|
KanKonga · 为什么这个swift代码没有显示在文本字段中? 2 年前 |
|
|
Community wiki · 目标的Xcode构建阶段的自动更新? 2 年前 |
|
|
Anton Timonin · 如何正确地将动态pod库更改为静态? 3 年前 |
|
|
Igor · 在OSX中,捆绑包的用户首选项在哪里? 3 年前 |
|
|
narner · 从Swift包创建Cocoapods框架 3 年前 |