Я недавно обновил свою систему сборки до macOS 10.15 и Xcode 11.3.1, но когда я пытаюсь скомпилировать одну из моих программ, я получаю сообщение об ошибке «Ожидается имя платформы, например,« macos »», и сборка останавливается. Я обнаружил, что эта проблема возникает, только если я собираю с помощью WebKit - если я закомментирую этот код, тогда программное обеспечение собирается и работает правильно (за исключением возможности отображения HTML, конечно). Я задавался вопросом, может ли проблема быть в моем использовании WebViews - которые устарели - поэтому я вместо этого обновил код до WKWebView, и проблема все еще возникает. Конечно, поскольку я получаю эту ошибку, я не знаю, правильно ли я обновил WKWebView - он не запустится и не обнаружит никаких других ошибок в этой части моего кода.
HTMLViewController.h:
#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>
#import "ReadEML.h"
@interface HTMLViewController : NSViewController //<WebPolicyDelegate>
{
NSSize dpi;
}
@property (assign) IBOutlet WKWebView *mailContentView;
- (WKWebView*)contentView;
- (void)displayContentFromReader:(id)emlReader;
- (void)setFormattingOn:(bool)formatting;
- (void)webView:(WKWebView *)webView
decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction
decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;
@end
HTMLViewController.m
#import "HTMLViewController.h"
#import "Webtools.h"
#import "Stringtools.h"
@interface HTMLViewController ()
@end
@implementation HTMLViewController
- (void)awakeFromNib {
CGDirectDisplayID displayID = [_mailContentView.window.screen.deviceDescription[@"NSScreenNumber"] unsignedIntValue];
CGSize size = CGDisplayScreenSize(displayID);
CGDisplayModeRef mode = CGDisplayCopyDisplayMode(displayID);
dpi.width = CGDisplayModeGetWidth(mode) * 25.4 / size.width;
dpi.height = CGDisplayModeGetHeight(mode) * 25.4 / size.height;
CGDisplayModeRelease(mode);
float scaling = [AppDelegate.sharedAppdelegate getPreferenceForKey:@"DefaultZoom"]?[[AppDelegate.sharedAppdelegate getPreferenceForKey:@"DefaultZoom"] intValue]:100;
[_mailContentView.webFrame.frameView.documentView scaleUnitSquareToSize:NSMakeSize(dpi.width / (dpi.width / (scaling / 100.0)), dpi.height / (dpi.height / (scaling / 100.0)))];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
return self;
}
- (WKWebView*)contentView {
return _mailContentView;
}
- (void)webView:(WKWebView *)webView
decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction
decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
if (navigationAction.request.URL) {
decisionHandler(WKNavigationActionPolicyCancel);
[NSWorkspace.sharedWorkspace openURL:navigationAction.request.URL];
} else {
decisionHandler(WKNavigationActionPolicyAllow);
}
}
- (void)displayContentFromReader:(id)dataCollector {
@autoreleasepool {
NSString* pathStem = getTempCacheDirectory();
NSURL* rootURL = [NSURL URLWithString:[pathStem stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL* ReadRootURL = [NSURL fileURLWithPath:[pathStem stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[_mailContentView.webFrame loadHTMLString:[dataCollector getContent:@"RawHTML"] baseURL:ReadRootURL];
}
}
@end
Мой внутренний инстинкт подсказывает мне, что этой конкретной проблемы нет в моем коде - может кто-нибудь подсказать, что еще может продолжаться? Как я уже сказал, если я не импортирую файл .h и удаляю все ссылки на его использование в коде, то код компилируется без проблем.
Он также компилируется без проблем в macOS 10.14.
Я озадачен!