I widać tego rozwiązania do stosowania CGRectMake()
w celu inicjalizacji CGRect
zmiennej:CGRectMake alternatywny
CGRect ramy = (CGRect {0,0,10,10)};
Moje pytanie brzmi: jak działa CGRect frame = (CGRect){0,0,10,10};
? Co dzieje się za kulisami? Wygląda na to, że inicjowana jest tablica w stylu c ({x,y,w,h}
), która jest następnie rzutowana jako struktura CGRect
- czy to prawda? Jeśli tak, to w jaki sposób można rzucić tablicę w stylu c jako strukturę?
N.B. Nie pytam, czy właściwe jest użycie powyższej alternatywy dla CGRectMake()
, chcę tylko zrozumieć, dlaczego/jak to działa.
To po prostu działa, jeśli oba oświadczenia utworzyć taką samą sekwencję bajtów. Jednak jestem zdezorientowany, że używasz 0 i 10 zamiast 0.0 i 10.0. 0 i 10 będą kompilowane jako stałe całkowite, a 0.0 i 10.0 będą wyprowadzane jako zmienne/podwójne stałe. Dlatego wątpię, czy można użyć pływaka jako ramy prawnej dla czegoś pożytecznego. CGRect to struktura wykonana z CGPoint i CGSize. Oba składają się z dwóch elementów CGFload (x i y w przypadku CGPoint oraz width i height w przypadku CGSize). –