协议方法的默认是可选还是必选?

4

我曾经认为协议方法的默认/隐式指定符是可选的。然而,在我的当前项目中,如果我没有明确添加@optional指定符,就会收到警告。这不是什么大问题。我只是想知道,它是在一段时间内默认为可选的,现在是必需的吗?或者可能是我以前学习Objective-C时错过了什么。

提前感谢!

2个回答

6

@required 默认情况下是为了确保您的应用程序不会在继承协议并忘记实现方法时崩溃。因此,您应该手动设置@optional


3

来自Apple文档

默认情况下,协议中声明的所有方法都是必需的。

一直以来,默认情况下都是必需的。如果改变了这种情况,那么许多事情将会突然出现问题。


如果某个东西没有实现一个必需的方法,它只会产生编译器警告而不是错误吗? - C. Tewalt
@matrixugly 我认为这可能是一个错误,但为什么不尝试一下呢? - rmaddy
@rmaddy 是的,我确实尝试过了,没有编译器错误,只是运行时崩溃。 - C. Tewalt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接