Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c XCode版本之间的编译问题(webkit)_Objective C_Xcode6_Webkit_Xcode7 - Fatal编程技术网

Objective c XCode版本之间的编译问题(webkit)

Objective c XCode版本之间的编译问题(webkit),objective-c,xcode6,webkit,xcode7,Objective C,Xcode6,Webkit,Xcode7,我有一个从NSView派生的类,它包装了一个WebView实例。此类被设置为不同部分(框架加载、UI、策略和资源加载)的委托。这可以很好地编译XCode 6 升级到XCode 7后,我出现了错误,因为WebView的frameLoadDelegate等已从id更改为id。为了使其再次编译,我将代码更改为: @interface WebBrowser : NSView <WebFrameLoadDelegate, WebUIDelegate, WebPolicyDelegate, WebRe

我有一个从NSView派生的类,它包装了一个WebView实例。此类被设置为不同部分(框架加载、UI、策略和资源加载)的委托。这可以很好地编译XCode 6

升级到XCode 7后,我出现了错误,因为WebView的frameLoadDelegate等已从
id
更改为
id
。为了使其再次编译,我将代码更改为:

@interface WebBrowser : NSView <WebFrameLoadDelegate, WebUIDelegate, WebPolicyDelegate, WebResourceLoadDelegate> {
...
@界面浏览器:NSView{
...
这可以在XCode 7中编译并正常工作,但在XCode 6中不能。即使在那里也定义了委托,并且包含了WebKit,我仍然会发现这些委托未知的错误。这里有什么修复方法可以使它在XCode 6中也能工作


我正在考虑用一个#if/#endif来包装协议部分,但不知道可以使用什么作为条件。

一个解决方案是通过显式地将委托强制转换为
(id)
,而不是让类实现协议,从而使XCode 7编译器(LLVM 7)静音

- (instancetype)initWithObject: ...
{
  self = [super initWithFrame: NSMakeRect(10, 10, 10, 10)];
  if (self)
  {
    mBrowser = [[[WebView alloc] initWithFrame: [self frame]] autorelease];
    [self addSubview: mBrowser];
    [mBrowser setFrameLoadDelegate: (id)self];
    [mBrowser setUIDelegate: (id)self];
    [mBrowser setPolicyDelegate: (id)self];
    [mBrowser setResourceLoadDelegate: (id)self];
    [mBrowser setShouldCloseWithWindow: YES];
  }
  return self;
}