CLANG_ANALYZER_NONNULL(つまり-Xclang nullability)を使用すると、「 null 以外の値を返すことが期待される関数から Null が返されます」という結果が得られました。

Xcode 7.3 および iOS 9.3 のドキュメントを使用して確認initWithFrame:したところ、次のものが返されnilます。

しかし、UIView.h はすべてをNS_ASSUME_NONNULL_BEGINでカプセル化するため、次のように解釈できます。

なので:
- (nonnull instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
したがって、ドキュメントではそれが であると説明されていnullableますが、ヘッダー ファイルでは であると説明されていますnonnull。どちらを信頼しますか?
私は書くべきですか:
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (!self) {
// workaround for clang analyzer
return (void * _Nonnull)nil;
}
// Initialization code
return self;
}
または:
- (nonnull instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
// Initialization code
return self;
}
アップデート
Xcode のドキュメントが更新され、次のようになりました。

したがって、これ以上の競合はありません。