これは別の質問で出てきました ( meronixが親切に回答しました) が、ここで何が起こっているのか、これは LLVM/Clang の問題なのか、それとも 2 つのステートメントが何らかの形で異なるのかについて、もう少し知りたいと思っています。

追加することでこれを修正できることを知っているので(以下を参照)、何よりも興味があります...

これは別の質問で出てきました ( meronixが親切に回答しました) が、ここで何が起こっているのか、これは LLVM/Clang の問題なのか、それとも 2 つのステートメントが何らかの形で異なるのかについて、もう少し知りたいと思っています。

追加することでこれを修正できることを知っているので(以下を参照)、何よりも興味があります...

2 つのステートメントは異なります。プロパティは、左辺値の型がプロパティを宣言する場合にのみ使用できます。これは、プロパティのゲッターとセッターが明白でない可能性があるためです (多くの場合、ゲッターが明示的に に設定されているブール型プロパティの場合isSomethingです)。コンパイラは、強い型情報がなければそれを推測できません。
ただし、構文にはその[lvalue message]ようなあいまいさがないため、コンパイラはそれを許可します。左辺値の型は であるためid、コンパイラの警告なしで既知のメッセージを送信できます。コンパイラは、2 つのシグネチャが同じセレクターに対応する場合にのみ警告します (たとえば、1 つのクラスが を持ち- (UIWindow *)window、別のクラスが を持ってい- (int)windowます)。
UIApplicationDelegateプロトコルはプロパティを定義するためwindow、オブジェクトを として明示的に入力するid <UIApplicationDelegate>と、コンパイラはプロパティを認識して使用できます。