Заполнение NSRectPointer в Swift
Я перевожу код Objective-C, полученный из книги, в Swift. Рассматриваемый код является пользовательской реализацией NSTextContainer
метод:
-(NSRect)lineFragmentRectForProposedRect:(NSRect)proposedRect
sweepDirection:(NSLineSweepDirection)sweepDirection
movementDirection:(NSLineMovementDirection)movementDirection
remainingRect:(NSRectPointer)remainingRect
{
// ... now set value of the struct pointed at by NSRectPointer
*remainingRect = NSRectMake(0, 0, 100, 50);
//...
return mainRect;
}
Я изо всех сил пытался воспроизвести это в Swift - независимо от того, что я пытаюсь, мне постоянно говорят, что я не могу назначить let
переменная.
1 ответ
Решение
NSRectPointer
определяется как
public typealias NSRectPointer = UnsafeMutablePointer<NSRect>
а также UnsafeMutablePointer
имеет
/// Access the underlying raw memory, getting and setting values.
public var memory: Memory { get nonmutating set }
свойство, следовательно, Swift эквивалент кода Objective-C
*remainingRect = NSRectMake(0, 0, 100, 50);
должно быть
remainingRect.memory = NSMakeRect(0, 0, 100, 50)