2017-05-02 5 views
0

私はカスタムUIViewを実装していますし、UIViewの両方から初期化子を上書きしたいと思いますので、私は彼らが私のCustomUIView.hUIView.hに表示されるとおりに彼らの宣言をコピー:カスタムUIViewの:initWithFrameとinitWithCoderメソッドのオーバーライドのためのXcodeのNULL可能警告

- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER; 
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER; 

しかし、ビルド時に、Xcodeはそれぞれ、これらのラインの両方のための警告を示す:

CustomUIView.h:4:13のポインタは、NULL可能型仕が欠落していますER (_Nonnull、_Nullable、または_Null_unspecified)
CustomUIView.h:14:49:ポインタがNULL可能型指定子私はこれらの警告を得ている理由(_Nonnull、_Nullable、 または_Null_unspecified)

が欠落しています、宣言がCocoaフレームワークのソースから取得され、正しく修正する方法は?

答えて

0

私はそれを理解したと思う。ココア.hファイルを通じて

は、NS_ASSUME_NONNULL_BEGINNS_ASSUME_NONNULL_ENDマクロの使い方はNULL可能注釈(nonnullまたはnullableのいずれか)を明示的にマークされていないメソッド宣言にnonnullとしてすべてのポインタを作るこれ、それぞれ最初と最後にあります。

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 
関連する問題