Apple 库 (CoreGraphics) 似乎将声明和定义分开 (Swift)
Apple libraries (CoreGraphics) seem to separate declaration and definition (Swift)
根据下面类似的问题,函数声明和定义是不可能分开的。
Separation of function declaration and definition in Swift
但是,我试图查看 CGRect 的实现并在 CoreGraphics/CGGeometry 中找到以下内容(通过右键单击代码中的 "CGRect" 并选择 "Jump to Definition")。
struct CGRect {
var origin: CGPoint
var size: CGSize
}
extension CGRect {
static var zeroRect: CGRect { get }
static var nullRect: CGRect { get }
static var infiniteRect: CGRect { get }
init()
init(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)
init(x: Double, y: Double, width: Double, height: Double)
init(x: Int, y: Int, width: Int, height: Int)
var width: CGFloat { get }
var height: CGFloat { get }
var minX: CGFloat { get }
var midX: CGFloat { get }
var maxX: CGFloat { get }
var minY: CGFloat { get }
var midY: CGFloat { get }
var maxY: CGFloat { get }
var isNull: Bool { get }
var isEmpty: Bool { get }
var isInfinite: Bool { get }
var standardizedRect: CGRect { get }
mutating func standardize()
var integerRect: CGRect { get }
mutating func integerize()
func rectByInsetting(#dx: CGFloat, dy: CGFloat) -> CGRect
mutating func inset(#dx: CGFloat, dy: CGFloat)
func rectByOffsetting(#dx: CGFloat, dy: CGFloat) -> CGRect
mutating func offset(#dx: CGFloat, dy: CGFloat)
func rectByUnion(withRect: CGRect) -> CGRect
mutating func union(withRect: CGRect)
func rectByIntersecting(withRect: CGRect) -> CGRect
mutating func intersect(withRect: CGRect)
func rectsByDividing(atDistance: CGFloat, fromEdge: CGRectEdge) -> (slice: CGRect, remainder: CGRect)
func contains(rect: CGRect) -> Bool
func contains(point: CGPoint) -> Bool
func intersects(rect: CGRect) -> Bool
}
Apple 是否设法将定义分离到不同的文件中?如果我想看看CGRect的实际实现,有没有办法找到它?
Apple 使用特殊的 Apple 专用工具将它们分开。你不能重新创建这个。
CGRect
的完整实现在 CoreGraphics/CGGeometry.h
:
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
这是 ObjC 等同于工具转换为 Swift 的内容(或者可能是有人手工编码的,因为这些看起来不像许多其他自动生成的 Swift 代码):
struct CGRect {
var origin: CGPoint
var size: CGSize
}
如果您指的是各种功能的实现方式(如 CGRectMake
),不,这些功能不可用。我不相信 CoreGraphics 是开源的。
根据下面类似的问题,函数声明和定义是不可能分开的。
Separation of function declaration and definition in Swift
但是,我试图查看 CGRect 的实现并在 CoreGraphics/CGGeometry 中找到以下内容(通过右键单击代码中的 "CGRect" 并选择 "Jump to Definition")。
struct CGRect {
var origin: CGPoint
var size: CGSize
}
extension CGRect {
static var zeroRect: CGRect { get }
static var nullRect: CGRect { get }
static var infiniteRect: CGRect { get }
init()
init(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)
init(x: Double, y: Double, width: Double, height: Double)
init(x: Int, y: Int, width: Int, height: Int)
var width: CGFloat { get }
var height: CGFloat { get }
var minX: CGFloat { get }
var midX: CGFloat { get }
var maxX: CGFloat { get }
var minY: CGFloat { get }
var midY: CGFloat { get }
var maxY: CGFloat { get }
var isNull: Bool { get }
var isEmpty: Bool { get }
var isInfinite: Bool { get }
var standardizedRect: CGRect { get }
mutating func standardize()
var integerRect: CGRect { get }
mutating func integerize()
func rectByInsetting(#dx: CGFloat, dy: CGFloat) -> CGRect
mutating func inset(#dx: CGFloat, dy: CGFloat)
func rectByOffsetting(#dx: CGFloat, dy: CGFloat) -> CGRect
mutating func offset(#dx: CGFloat, dy: CGFloat)
func rectByUnion(withRect: CGRect) -> CGRect
mutating func union(withRect: CGRect)
func rectByIntersecting(withRect: CGRect) -> CGRect
mutating func intersect(withRect: CGRect)
func rectsByDividing(atDistance: CGFloat, fromEdge: CGRectEdge) -> (slice: CGRect, remainder: CGRect)
func contains(rect: CGRect) -> Bool
func contains(point: CGPoint) -> Bool
func intersects(rect: CGRect) -> Bool
}
Apple 是否设法将定义分离到不同的文件中?如果我想看看CGRect的实际实现,有没有办法找到它?
Apple 使用特殊的 Apple 专用工具将它们分开。你不能重新创建这个。
CGRect
的完整实现在 CoreGraphics/CGGeometry.h
:
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
这是 ObjC 等同于工具转换为 Swift 的内容(或者可能是有人手工编码的,因为这些看起来不像许多其他自动生成的 Swift 代码):
struct CGRect {
var origin: CGPoint
var size: CGSize
}
如果您指的是各种功能的实现方式(如 CGRectMake
),不,这些功能不可用。我不相信 CoreGraphics 是开源的。