Objective-C中的空方法(_N)



如果我有一个方法:

- (NSString*)convertName;

然后我做了一些类似的事情:

- (NSString*)convertName {
if (![myName isEqualToString:@"someString"]) {
return NULL;
}
.......
}

如果我没有指定_Nullable,为什么编译器允许我这样做?

在Objective-C中,如果您的方法是:

  • 未在NS_ASSUME_NONNULL_BEGIN/NS_ASSUME_NONNULL_END块内声明
  • 未使用_Nullable/_Nonnull参数/返回类型显式声明

则编译器不会强制执行非可选性。在这种情况下,期权性是隐含的(这与Swift相反,Swift必须明确说明期权性(,但以不安全的方式。

如果你上面的方法用Swift表示,你可以看到这一点——它会被显示为这样声明:

func convertName() -> String!

最新更新