그래서 뷰에 메서드를 전달하고 뷰 내에 포함 된 CGRect에서 일부 값의 속성을 찾고 싶습니다.네 가지 속성 (NSPoints)의 위치를 저장하는 가장 효율적인 방법은 무엇입니까?
- (void)blahblah:(someView*)view
int originX = view.myCGRect.origin.x;
int originY = view.myCGRect.origin.y;
int width = view.myCGRect.size.width;
int height = view.myCGRect.size.height;
이 방법을 쓰면 더 좋을까요?
- (void)blahblah:(someView*)view
CGRect sameCGRect = view.myCGRect;
int originX = sameCGRect.origin.x;
int originY = sameCGRect.origin.y;
int width = sameCGRect.size.width;
int height = sameCGRect.size.height;
아니면 더 효율적인 방법이 있습니까?
또한 객관적으로 C 언어에 익숙하지 않으므로이 두 구현간에 차이점이 있는지 설명 할 수 있습니다. 그렇다면 무엇입니까?
당신이하고있는 일은 수동적 인 "공통적 인 부분 표현식 제거"입니다. 공통 값 (여기서는'view.myCGRect')은 여러 참조 앞에 "게양 (hoisted)"되어 있습니다. 이것은 공통 코드가 루프 외부에있을 때 특히 효과적입니다. 그러나 컴파일러 (또는 JITC for Java)는 이러한 CSE를 인식하여 자동으로 "호이스트"할 수 있습니다. 그러나 수동 작업을 수행하는 경우 코드를 자주 따르기 쉽고 유지 관리하기가 더 쉽습니다. –
답변 해 주셔서 감사합니다. 저는 StackOverflow에서 비교적 새로운 것입니다. 그래서 왜 당신이 대답하지 않고 대신 그냥 코멘트했는지 궁금합니다. –
나는 너무 게으르다. –