我正在实施自定义UIView
,并希望覆盖UIView
的两个初始值设定项,因此我将其声明完全按照UIView.h
中的CustomUIView.h
复制到我的- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
:
isButtonToggle(x):void{
switch(x){
case 1:
this.buttonClicked1 = !this.buttonClicked1
if(this.buttonClicked2 = true){
this.buttonClicked2 = !this.buttonClicked2;
}
break;
case 2:
this.buttonClicked2 = !this.buttonClicked2;
if (this.buttonClicked1 = true){
this.buttonClicked1 = !this.buttonClicked1;
}
break;
}
但是在构建过程中,Xcode分别显示了这两行的警告:
CustomUIView.h:13:4:指针缺少可空性类型说明符 (_Nnnull,_Nullable或_Null_unspecified)
CustomUIView.h:14:49:指针缺少一个可空性类型说明符(_Nonnull,_Nullable, 或_Null_unspecified)
为什么我会收到这些警告,如果声明来自Cocoa框架源以及如何正确修复它们?
答案 0 :(得分:0)
我想我已经明白了。
在整个Cocoa .h
文件中,分别在开头和结尾有NS_ASSUME_NONNULL_BEGIN
和NS_ASSUME_NONNULL_END
个宏用法,这使得方法声明中的所有指针都不是nonnull
使用可为空性注释明确标记(nonnull
或nullable
)。
将这些宏添加到我的CustomUIView.h
后,XCode警告消失了:
NS_ASSUME_NONNULL_BEGIN
@interface CustomUIView : UILabel
- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
@end
NS_ASSUME_NONNULL_END