Заполнение 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)
Другие вопросы по тегам