小编tou*_*per的帖子

它是正确的/ ellegant只使用alloc而没有init吗?

如果我们不想在我们的类中实现init方法,并且记住NSObject中的init只返回对象的实例而没有初始化,如果我们已经使用alloc获取实例,我看不到调用init的意义.我已经尝试过并且有效,但我不确定它是否会导致未来出现问题.

myClass *newObject = [myClass alloc];
Run Code Online (Sandbox Code Playgroud)

代替:

myClass *newObject = [[myClass alloc] init];
Run Code Online (Sandbox Code Playgroud)

非常感谢.

iphone cocoa-touch memory-management objective-c init

6
推荐指数
1
解决办法
2189
查看次数

不能子类化 WKWebView

我正在尝试对 WKWebView 进行子类化。当我实现自己的初始化程序时,出现此错误:

'required' initializer 'init(coder:)' must be provided by subclass of 'WKWebView'
Run Code Online (Sandbox Code Playgroud)

好的,众所周知,我们必须为 UIView 的子类实现它。对于 UIView 的直接子类,它只是实现它,但对于 WKWebView,它似乎并不那么简单。我遵循了 Fix-it 提示,并将此代码段添加到代码中:

required @availability(*, unavailable) convenience init!(coder: NSCoder!) {
        fatalError("init(coder:) has not been implemented")
    }
Run Code Online (Sandbox Code Playgroud)

所以我得到一个如下所示的类:

import WebKit


class TSWebView : WKWebView {

    let s: String
    let i: Int

    init(s: String, i: Int) {
        self.s = s
        self.i = i
        super.init(frame: CGRectZero, configuration: WKWebViewConfiguration())
    }

    required @availability(*, unavailable) convenience init!(coder: NSCoder!) {
        fatalError("init(coder:) has not been implemented")
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我遇到了其他四个错误:

expected …
Run Code Online (Sandbox Code Playgroud)

subclass init ios swift wkwebview

6
推荐指数
2
解决办法
4553
查看次数