Objective c convertBaseToScreen方法现已弃用

Objective c convertBaseToScreen方法现已弃用,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我的旧代码使用convertBaseToScreen,现在已经不推荐使用了。虽然由于删除了该功能,我不再在我的应用程序中使用此代码,但我想知道,如果我计划恢复此功能,是否可以在这里找到有帮助的人来帮助更改代码 - (void) updateAdWindow { NSPoint origin = [window convertBaseToScreen:NSMakePoint( (window.frame.size.width - adWindow.frame.size.width)/2,

我的旧代码使用convertBaseToScreen,现在已经不推荐使用了。虽然由于删除了该功能,我不再在我的应用程序中使用此代码,但我想知道,如果我计划恢复此功能,是否可以在这里找到有帮助的人来帮助更改代码

- (void) updateAdWindow
{
    NSPoint origin = [window convertBaseToScreen:NSMakePoint( (window.frame.size.width - adWindow.frame.size.width)/2, 0)];
    origin.y -= adWindow.frame.size.height;

    if( closed )
        [adWindow setFrame:NSMakeRect(origin.x, origin.y, WIN_SIZE_WIDTH, 0) display:TRUE];
    else
        [adWindow setFrame:NSMakeRect(origin.x, origin.y, adWindow.frame.size.width, adWindow.frame.size.height) display:TRUE];
}

不幸的是,我无法测试这一点,替换的新方法似乎与旧方法非常不同。如何转换?

苹果的文档说明:

使用convertRectToScreen:代替


转换window.frame并使用结果计算原点。

NSWindow方法:convertRectToScreen:与convertBaseToScreen:没有兼容的签名,因此使用以下NSWindow类别方法可能会有所帮助:

@implementation NSWindow (ExileTriage)

- (NSPoint) convertPointToScreen:(NSPoint)point
{
    NSRect convertRect = [self convertRectToScreen:NSMakeRect(point.x, point.y, 0.0, 0.0)];
    return NSMakePoint(convertRect.origin.x, convertRect.origin.y);
}

@end

convertPointToBacking还是convertPoint:toView:work?我不太确定,因为我无法测试它,我希望有人能帮我编写这段代码。这个实现是否等同于苹果从10.12开始提供的、名称和签名完全相同的实现?