Ja, ich sah diese:Kann ich mich darauf verlassen, dass nil UIView CGRectZero für seinen Frame zurückgibt?
Wenn die Methode eine Struktur zurückgibt, wie im Guide Function Call ABI X Mac OS definiert in Registern zurückgeführt werden, wird eine Nachricht an nil 0.0 für jedes Feld geschickt in die Struktur Andere Strukturdatentypen werden nicht mit Nullen gefüllt.
Ich verstehe es einfach nicht.
Siehe das Dokument, das ich in der Frage zitiert habe. Es stammt aus der offiziellen The Objective-C Programmiersprache. Sie können sehen, dass die zurückgegebene Struktur bereits mit Nullen gefüllt ist, aber nur für diejenigen, die "wie in der Mac OS X ABI-Funktionsaufruf-Anleitung in Registern zurückgegeben" definiert sind. Ich bin mir nicht sicher, was der Tweet oben bedeutet. Bedeutet dies, dass jede Struktur jetzt mit Nullen gefüllt ist, einschließlich jener "Andere Strukturdatentypen, die in den alten Tagen nicht mit Nullen gefüllt werden"? – an0
Ja; Es war in den meisten Fällen so, dass Messaging nil keine zero-filled-Struktur zurückgeben würde, außer in dem glücklichen Fall, in dem der ABI, dass der struct-Rückgabewert in Registern übergeben werden sollte. (Nur für sehr kleine Strukturen.) Stack-basierte Rückgabewerte wurden nicht mit Nullen gefüllt. Aber mit dem LLVM-Compiler in Xcode 4.2 oder höher sind sie jetzt * immer * Null gefüllt. –
Zusätzlich zu dem Tweet oben wurde es auch in einer der Sitzungen auf der WWDC 2011 erwähnt. –