UML swift 는 UML 을통해 100% 표현할수 없다. UML정의 UML: Unified Modeling Language 통합 모델링 언어 UML 은 소프트웨어 공학에서 사용되는 표준화된 범용 모델링 언어이다. UML 은 소프트웨어 집약 시스템의 시각적 모델을 만들기 위한 도안 표기법(클래스 다이어그램)을 포함한다. 개요 모델을 만드는 표준 언어 라고 할수있다. UML은 객체지향 프로그래밍 소프트웨어 를 개발할 때 명세화, 시각화, 문서화 하기 위해 사용할수 있다. UML을 이용해 시스템의 구조적 청사진을 시각화 하는 표준안을 제공할수 있다. 모델 이란 것은 어떤 것을 실제로 만들때 이렇게 만들면 잘 작동할지 미리 검증해 보는 것이며 실제 물건을 만드는 비용보다 비용이 훨씬 적을 경우에 모델을 만들..
참고한 문서 ARC공식문서 제드블로그 ARC 자동 참조 카운팅 (Automatic Reference Counting) swift는 앱의 메모리 사용량을 관리하기 위해 ARC 를 사용한다. ARC 는 클래스 인스턴스가 더이상 사용되지 않을때 자동으로 메모리에서 해제 시켜준다. ARC 는 해당 클래스의 RC(Reference Counting) 를 통해 사용하고있는지 사용되지 않는지 알수있고 이를 통해 자동으로 메모리에서 해제가 가능하게 된다. 클래스의 저장 방식 클래스를 인스턴스화 하게되면 stack 에는 heap 을 가르키는 포인터가 저장된다. 이때 heap 영역을 참조하게 되므로 RC 는 1 이된다. RC 는 heap 영역에 같이 저장된다. RC 를 측정하기 위해 메모리를 조금더 사용한다고 할수 있겠다...
참고한 문서 공식문서 클로저 개발자 소들이 블로그 Closure 클로저란 익명 함수 즉 기존 사용하던 함수들도 클로저에 속한다. 클로저 > 함수 (클로저가 더 큰 개념이다! 함수가 클로저의 부분 집합!) 그치만 편의상 클로저라고 말하는것은 여기서 이름없는 함수 를 뜻하게된다. 이름 없는 함수라고도 할수 있으며 코드의 블럭 이라고도 표현할수 있겠다. Swift에서는 함수 패러다임 언어이기 때문에 함수는 1급 객체 이다. 그런고로 클로저도 1급 객체다! 상수나 변수에 대입하는것도 가능하며 함수의 타입에 따라 파라미터로 사용할수도 있다. Closure 표현식 이름 없는 함수 이기때문에 func 키워드를 작성하지 않으며 클로저는 Head, Body 로 이루어져 있다. { (parameters)->return T..
stack-view 스택뷰 를 이해하기 위해 알고있어야 하는 개념들 compression Resistance (줄어들지 않으려고 버티는 힘) Content hugging (늘어나지 않으려고 버티는 힘) 스택뷰의 개념들 axis 가로(vertical), 세로(Horizontal) distribution 스택뷰 내부의 요소들을 어떻게 분배할것인지 설정할수 있다. alignment 위치에 대한 설정(정렬) spacing 사이의 간격 Stack-View Properties distribution: UIStackView.Distribution 스택뷰 내부의 요소들을 어떻게 분배할것인지 설정할수 있다. .fill 내부의 요소 뷰들을 최대한 늘릴것이다. 어떤애가 얼만큼 늘어날것인지 고민이 필요하다. .fillEqua..
Programmatically Creating Constraints 오토레이아웃의 조건 들을 코드로 작성해보자! 위의 조건들을 코드로 작성할수 있도록 해보자! 버튼은 safeArea 에서 좌우 20 포인트만큼 떨어져있다. 버튼의 y축은 superView에서 최소 20 만큼 떨어져있다.(우선도 높음) 버튼의 y축은 safeArea에서 0 만큼 떨어져있다.(우선도 중간) Layout Anchors(레이아웃 앵커) 가장 간단하고 안전한 방법중 하나이다. 코드가 간결해진다. 오류체크가 간편하다. class AnchorViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let button = UIButton() b..
로그 확인 사이트 wtfautolayout Debugging Auto Layout Types of Errors(오류의 종류들) 충족되지 않은 Layout(Unsatisfiable Layout) 애매한 Layout(Ambiguous Layout) 논리적 오류(Logical Errors) 충족되지 않은 Layout(Unsatisfiable Layout) 조건이 모두 충족되지 않았을때.(지금 조건들로 크기와 위치를 특정할수 없을때.) 빨간거 누르면 무슨 조건이 부족한지 어떤 조건과 충돌이 일어나는지 알수있다. 충족되지 않은 레이아웃을 실행하면 다음과 일이 발생한다. 충돌이 일어난 조건을 알아낸다. 충돌이 일어난 조건들을 충돌이 일어나지 않을때까지 하나씩 제거해본다. 어떤 조건이 잘못되었는지 로그를 남겨 개발자..
AutoLayout AutoLayout 의 핵심 Constraint(제약) 이 AutoLayout 의 핵심이다. 뷰 들에게 왼쪽에서 어느정도 떨어져있으면 좋겠어 라는 식으로 제약을걸어 앱을 실행할 기기의 화면 크기와 상관없이 유동적인 화면을 제공할수 있도록 한다. AutoLayout Attributes 오토레이아웃의 제약은 하나의 수식으로 나타낼수 있다. 수식을 보자면 RedView.Leading = 1.0 x BlueView.trailing + 8.0 여기서 RedView 는 목적지이며 Leading 는 앞머리(왼쪽) 을 의미한다. RedView 는 BlueView 의 Trailing(오른쪽) 에서 8.0 포인트 떨어진곳에 위치한다. 라고 해석할수있다. Relationship 은 관계를 뜻함. (=) ..
Interface Builder 의 도구들 Update Frame 메뉴 잘못 만져서 view 의 위치가 바뀌었을 경우 클릭시 현재 view 가 조건에 걸려있는 위치,크기로 적용된다. Align 메뉴 엣지 들을 정렬 시켜줄수 있는 메뉴 view 여러개를 Top Edges Align 로 묶어주게되면 같은 위치의 높이로 정렬되게 된다.(위치 뿐만아니라 조건에 따라 크기도 결정할수 있음.)(여러개가 관계를 맺게 됨.) 핀(pin) 메뉴 view 간의 거리 혹은 사이즈를 정할수있는 메뉴 Aspect Ratio view 의 크기를 비율로 정해주고 싶을 경우 사용되는듯하다. reserve issue 메뉴 선택한 view와 모든 view 의 설정이 나뉘어져 있음. Add Missing Constraints 부족한 조건..