M: ModelV: ViewC: Controller -> ViewControllerVC에 비즈니스 로직 포함데이터 가져오기, 데이터 추가 등M: Model -> 데이터V: View -> ViewControllerVM: View Model -> 비즈니스 로직 포함View
딱 맞음비율 조정비율 유지넘어감비율 유지안쪽에▶︎ Aspect Ratio -> 화면 비율 -> 비율 유지▶︎ Fill -> 채우다 -> 먼가 큰 느낌 ㅋ▶︎ Fit -> 맞추다 -> 먼가 줄인 느낌 ㅎ
셀의 마지막 줄이 나타날 때 쯤 데이터 추가해줌
1\. 사이즈 맞추기컬렉션뷰 크기 == 셀 크기2\. 레이아웃 설정셀 간격 없음스크롤 방향 가로컬렉션뷰 넘기기 가능
8\. viewDidUnload
출처 https://developer.apple.com/documentation/uikit/appandenvironment/managingyourappslife_cycle 공식 문서에 있는 글을 나름대로 해석해서 정리해보았다 앞쪽 앱은 자원의 우선순위 가짐 뒤쪽 앱
앱에서는 여러 객체를 관리함 >> UIWindowSceneUI당 windows, view controllers 한 세트각 씬은 UIWindowSceneDelegate 객체도 있음UIApplicationDelegate 객체에서 새로운 씬 설정함https://de
Automatic Reference CountingSwift 차원에서 지원?메모리 관리 목적컴파일 시점에 실행됨원래 MRC(Manual Reference Counting. 수동)했음retain, release를 자동 삽입retain >> count += 1release
ARC와 관련강한 참조디폴트참조할때 retain >> count+=1종료시 release >> count-= 1count==0 일 떄 메모리 해제약한 참조retain, release 없음메모리 해제시 자동으로 nil로 만들어줌객체가 옵셔널이어야 함미소유, 약한 참조자동
클로저named 클로저unnamed 클로저 >> 익명 함수보통 이걸 말함트레일링 클로저괄호 안에 들어가는거 괄호 뒤에 쓸수 있음경량 문법마니마니 생략가능@autoclosurenon-escaping도망 안감 >> 대입, 리턴, 반드시 실행 >> 참조순환 안생김디폴트@es
Sync >> 동기 >> 순서대로Async >> 비동기 >> 순서 상관없이
블록 >> 기다리는거논블록 >> 안기다리는거
Grand Central Dispatch스레드의 종류main 스레드global 스레드메인 스레드에서 큐에 작업을 넣음GCD가 작업을 다른 스레드에 나눠줌큐 종류main 큐(serial 큐)동기global 큐(concurrent 큐) \- 비동기어렵다계속 작성할거임
캐시 종류메모리 캐시iOS 자체 제공빠름앱 끄면 사라짐디스크 캐시앱 꺼도 사리지지 않음FileManager 사용이미지가 변경되면?UserDefault에 Etag 저장
struct, enum은 value 타입class는 reference 타입Inheritance enables one class to inherit the characteristics of another.Type casting enables you to check and
Swift는 기본적으로 call by valueinout >> call by reference
옵셔널 타입의 프로퍼티나 메소드에 바로 접근하려 할 때 사용여러 번 가능 >> 체이닝최종 값도 옵셔널옵셔널 바인딩보다 간결하다는 장점
초기화를 init에서 해야할지 viewDidLoad에서 해야할지 궁금해져서 찾아봤다.viewController 객체 생성viewController의 view가 메모리에 로드된 후 호출됨링크https://developer.apple.com/documentatio
프로퍼티를 초기화하는 두 가지 방법이 무슨 차이가 있는지 궁금해서 찾아봤다If a property always takes the same initial value, provide a default value rather than setting a value within
컨텐츠의 본질적인 크기UIView는 가지지 않음 >> 설정하지 않으면 에러UILabel은 가짐 >> 설정하지 않아도 괜찮 >> but 경고동적으로Priority
네트워크 요청을 동기적으로 수행하고 싶어 찾아봤다count가 0일 때 작업 실행signal() >> count += 1wait() >> count -= 1근데 백그라운드에서 처리하고 싶었는데 모두 처리할때까지 멈춰버린다더 찾아봐야겠다