Objective-C有两种方法来测试对象是否是特定类或子类的实例:
- (BOOL)isMemberOfClass:(Class)aClass;
Run Code Online (Sandbox Code Playgroud)
返回一个布尔值,指示接收者是否是给定类的实例.
- (BOOL)isKindOfClass:(Class)aClass;
Run Code Online (Sandbox Code Playgroud)
返回一个布尔值,指示接收者是给定类的实例还是从该类继承的任何类的实例.
在Swift中,我可以使用is运算符测试后者:
if myVariable is UIView {
println( "I'm a UIView!")
}
if myVariable is MyClass {
println( "I'm a MyClass" )
}
Run Code Online (Sandbox Code Playgroud)
如何测试实例是否是Swift中的特定类或类型(即使在处理没有NSObject子类时)?
注意:我知道func object_getClassName(obj: AnyObject!) -> UnsafePointer<Int8>.
在Objective-C中用Swift /类别编写扩展时,我必须决定在Xcode项目中组织它们的结构化方法.我认为考虑不同Apple框架的依赖关系是个好主意.
让我们看一下框架的MKMapView类MapKit.它有一个属性centerCoordinate类型的属性CLLocationCoordinate2D.并且CLLocationCoordinate2D属于CoreLocation框架.因此,MapKit框架取决于CoreLocation框架.
我知道我可以浏览相应的头文件来收集我正在寻找的信息.但这很乏味.
是否在某处概述了iOS/MacOS SDK附带的所有Apple框架的依赖关系?或者更方便的方法来确定它们?
我正在查看文档 contentsOfDirectory(at:includingPropertiesForKeys:options:)
特别是我一直专注于论点includingPropertiesForKeys,它说:
一组键,用于标识您希望为目录中的每个项目预取的文件属性。对于每个返回的 URL,指定的属性被提取并缓存在 NSURL 对象中。有关您可以指定的键列表,请参阅通用文件系统资源键。
单击URLResourceKey使我找到了有关它的 Apple 文档。
我想知道,如果我像钥匙过去了fileResourceTypeKey,fileResourceIdentifierKey和creationDateKey我怎么能访问那些在返回的URL列表(呼叫后contentsOfDirectory(at:includingPropertiesForKeys:options:))?
我也对URLResourceKeyenum b/ca感到困惑,许多类型与其他键具有相似的描述和名称,例如:
documentIdentifierKey对比fileResourceIdentifierKey对比localizedNameKey对比nameKeylocalizedTypeDescriptionKey对比fileResourceTypeKey对比typeIdentifierKeycontentsOfDirectory(at:includingPropertiesForKeys:options:)vs返回的网址pathKey就像这些键之间有什么区别?
基本上我此时对文件系统的了解非常低,所以请忍受我的“简单”问题。如果有人能解释所有这些密钥的含义以及我如何访问/使用它们,那就太好了!
我很难找到构建这种设计的最佳方法.
顶视图具有最小高度,并在达到此高度时变粘.底部视图托管一个具有三个视图的分页控制器.这些视图中的每一个都承载具有垂直滚动的集合视图或表视图.
我真的不知道如何处理这个问题.整个视图是否可滚动,我应该阻止在第二个视图上滚动,直到顶视图达到它的粘性高度?或者这些视图中的每一个都是单独的uitableviews,而寻呼控制器只是一个单元格?我是否应该使用分页控制器,还是应该使用启用分页的scrollview?(后者有点粗糙的互动方式)
谢谢!

Apple在https://developer.apple.com/documentation/spritekit/skscenedelegate中说明:
修改受约束的回调之外的SpriteKit对象(后台队列或任何其他非主线程)可能导致与并发相关的问题.即使异步或稍后在主线程上调度工作也存在风险,因为关闭很可能是在SpriteKit期望的时间范围之外完成的.如果您遇到SpriteKit框架内部发生的分段错误或其他类型的崩溃,那么您的代码很可能会在正常回调之外修改SpriteKit对象.
我正在使用手势识别器与我的精灵工具包对象进行交互.一个简单的例子是当用户点击一个对象时向节点添加一个SKAction:
func tapAction(gr:UITapGestureRecognizer) {
scene.childNode(withName: "balloon")!.run(SKAction.fadeOut(withDuration: 2))
}
Run Code Online (Sandbox Code Playgroud)
尽管这一点"暂时正常",但我担心这在更复杂的情况下不起作用.
苹果有任何暗示这是允许的吗?或者我是否真的必须将SpritKit对象的修改从手势动作推迟到规定的回调?
我有一个 iPad 应用程序,它使用UICollectionView包含标签来显示数组中的字符串项。我现在正在为 OSX 创建应用程序,但我不确定如何执行此操作或应该使用什么。
Mac 上有类似的吗?