Если вы используете Apple Foundation, а не GNUStep или что-то еще странное ...
Objective-C
NSRect
- это просто typedef
CGRect
(NSGeometry.h
строка 30), так что вы можете просто использовать любое место вместо другого в любом месте.
void takeCgRect(CGRect rect) {
NSLog(@"A core graphics rectangle at %@ with size %@", NSStringFromCGPoint(rect.origin), NSStringFromCGSize(rect.size))
}
void takeNsRect(NSRect rect) {
NSLog(@"A NeXTStep rectangle at %@ with size %@", NSStringFromPoint(rect.origin), NSStringFromSize(rect.size))
}
// ELSEWHERE:
NSRect nsTest1 = NSRectMake(1, 2, 3, 4)
CGRect cgTest1 = CGRectMake(1, 2, 3, 4)
CGRect cgTest2 = CGRectMake(100, 200, 300, 400)
NSLog(@"%@", @(nsTest1 == cgTest1)) // 1
takeCgRect(nsTest1) // A core graphics rectangle at {1.0, 2.0} with size {3.0, 4.0}
takeNsRect(cgTest2) // A NeXTStep rectangle at {100.0, 200.0} with size {300.0, 400.0}
Swift
В Swift,NSRect
- это всего лишь typealias
из CGRect
(NSGeometry.swift
строка 435), поэтому вы можете просто использовать любой другой в любом месте.
let nsTest1 = NSRect(x: 1, y: 2, width: 3, height: 4)
let cgTest1 = CGRect(x: 1, y: 2, width: 3, height: 4)
let cgTest2 = CGRect(x: 100, y: 200, width: 300, height: 400)
print(nsTest1 == cgTest1) // true
func takeCgRect(_ rect: CGRect) {
print("A core graphics rectangle at \(rect.origin) with size \(rect.size)")
}
func takeNsRect(_ rect: NSRect) {
print("A NeXTStep rectangle at \(rect.origin) with size \(rect.size)")
}
takeCgRect(nsTest1) // A core graphics rectangle at (1.0, 2.0) with size (3.0, 4.0)
takeNsRect(cgTest2) // A NeXTStep rectangle at (100.0, 200.0) with size (300.0, 400.0)