如果我有一个方法:
- (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!