TLDR
如果框架被称为AEConicalGradient,那么它的类应该被称为ConicalGradientLayer和ConicalGradientView还是仅仅是Layer和View?
如果框架被称为AELog,并且它的类也称为AELog,而其他类称为Line,并且使用此Line类型的一些委托回调,如果您的代码也定义了名为Line的类型,则如何实现此委托,因为将框架名称添加为方法签名中的前缀func didLog(line: AELog.Line)会产生错误'Line' is not a member type of 'AELog',实际上它不是(它是AELog框架的一部分,但它不是AELog类的成员).
阅读更多
在为Swift 3更新我的几个框架的同时,我对框架类的正确命名约定有了很多想法,这取决于框架名称本身.
最后我意识到我并没有在不同的框架中使用相同的约定,所以现在我不喜欢这种缺乏一致性.
我将直接跳到我遇到的一些现实世界的例子中:
1.示例:Framework没有名为框架名称的类:
框架名为AEConicalGradient,它由2个公共类组成:
每个类的名称应该是什么?
a)AEConicalGradientLayer和AEConicalGradientView
b)ConicalGradientLayer和ConicalGradientView
c)图层和视图
讨论:
a)我在第一个框架版本中使用了这个,在单个AEConicalGradient.swift文件中使用这两个类.我不再喜欢这种方法,我将源分成多个文件,所以现在我在b)和c)方法之间进行思考.
b)在这种方法中,我喜欢这样一个事实:有人可以将这些文件拖到项目中(例如,不使用任何依赖管理器)或复制/粘贴代码,并且它不会过多地放松上下文(因为名称清晰),但是另一方面,如果您将其视为AEConicalGradient.ConicalGradientLayer和AEConicalGradient.ConicalGradientView,它听起来有点重复.
c) …
我正在使用Swift 4和Codable一点点,并且遇到了一些具有嵌套协议的场景,这些协议都符合Codable.
简化示例如下所示:
protocol CodableSomething: Codable {}
protocol CodableAnotherThing: Codable {
var something: CodableSomething { get }
}
struct Model: CodableAnotherThing {
var something: CodableSomething
}
Run Code Online (Sandbox Code Playgroud)
此代码使用Xcode 9 Beta 5进行构建错误:
现在,我没想到这些错误,因为我理解编译器会自动生成对这些协议的一致性,实际上,我甚至无法在没有构建错误的情况下手动实现此一致性.我也尝试了几种不同的方法来解决这种嵌套模型结构的使用,Codable但我无法使其工作.
我的问题:这是一个编译器错误(它仍然是测试版)或者我做错了什么?
在撰写本文时,Xcode 中还没有将 Canvas 中的实时预览导出为 PNG 图像的选项(这对于创建 App Store 屏幕截图非常有用)。
我不确定这在幕后是如何工作的,但我猜 Xcode Canvas 中也使用常规模拟器进行实时预览。由于可以从模拟器“保存屏幕”,我想知道是否有办法在 Xcode 画布中的实时预览中执行相同操作?
我能否以某种方式访问这些“预览模拟器”(即通过simctl工具)或磁盘上的 Xcode 渲染缓存,或者在 Apple 将此选项集成到 Xcode 之前是否有任何其他“hacky”方法来实现此目的(我认为这只是一个问题)时间)。
codable ×1
coding-style ×1
frameworks ×1
live-preview ×1
swift ×1
swift3 ×1
swift4 ×1
swiftui ×1
xcode ×1
xcode9 ×1