본문 바로가기

SWIFT9

Swift - Struct 와 Class 차이점 Swift 서적이나 일반적인 차이점에 대해서는 다음과 같이 설명하고 있다. 기본적으로 Struct 는 값 타입, Class 는 참조 타입. 값 타입이란? - Struct 에서 변수를 할당하면 스택 영역에 값이 저장된다. - 변수를 복사한 후 복사본을 변경하더라도 원본에 영향을 주지 않는다. - 힙 영역을 사용하지 않고 레퍼런스 카운팅이 필요하지 않다. 참조 타입이란? - 스택 영역에는 포인터(레퍼런스)만 할당되고 실제 데이터는 힙 영역에서 할당된다. - 변수를 복사하더라도 하나의 값을 가리키고 있기 때문에 복사본과 원본이 모두 같은 값을 갖는다. - 변수를 복사하더라도 레퍼런스 카운트만 +1되고 실제 값이 복사되지는 않는다. 좀 더 쉽게 설명하면, Struct 로 구성하면, 해당 Struct 에 값이 저.. 2022. 3. 22.
Swift Memory leak 관리 (1) - lazy var 변수 2개 앱을 만들고 앱스토어 출시하고, 앱 운영하면서 지금까지 메모리 누수 문제로 고생하거나, 문제가 된 적은 없었다. Swift 가 기본적으로 메모리를 알아서 관리해주기 때문이기도 하고, 실질적으로 에러를 발생시킨 적이 없었으니. 우연히 모 기업 인터뷰를 보다가 메모리 누수 관련 질문을 받았는데, 기존에 관심이 없었다 보니 불편한 경험도, 답변을 할 내용도 없었다. 무작정 어떻게든 앱을 만들어야지 라는 급한 의욕과 체계적으로 공부할 이유를 몰랐던 비전공자의 시너지(?)로 발생한 사건이었고 인터뷰 후, 약 한시간 정도 실력 부족에 대한 자아비판 시간을 가진 후, 몇몇 서적과 인터넷을 통해 Swift Memory leak 를 알아보았다. 앱 안정성에 굉장히 중요한 내용인데 여태 관심도 없었다는 나 스스로에게.. 2022. 3. 22.
Swift) UIButton 을 code로 만들 때, 버튼 실행 코드 넣기 (custom alert 만들기) 기존의 Alert 을 사용해서 Font 도 바꾸고 alert 창 모양도 바꿔보고 싶었다. 워낙 Alert library 가 많아서 개인 프로젝트였으면 적당한 디자인의 alert library를 이용해서 사용했을텐데... 팀 프로젝트는 그런거 얄짤없다. 주어진 디자인에 무조건 맞추는게 개발자의 숙명 ㅠㅠ 이건 xcode에서 제공하는 기본 UIAlert 으로 만든 alert view다. 이래저래 찾아보니, 타이틀과 메시지 부분은 폰트도 바꿀수 있고, 색깔도 바꿀수 있고.. 여러 customizing 이 가능한데, 유독 저 버튼은 폰트 색깔까진 바꿀수 있는데 폰트 자체를 바꾸진 못한다... 바꾸는 기능이 UIAlert을 통해서는 없다. 수 시간동안 검색해서 내린 결론이다. 그럼 어쩌지? 만들어야지 ㅠㅠ 만드는.. 2021. 6. 3.
Swift) 키보드 위로 Textfield 따라 올라오게 하기 검색하면 여러 Solution 들을 많이 찾아볼 수 있는데, 개인 프로젝트에서의 문제는 키보드 저 뒤에 뷰가 TableView이다 보니, 처음엔 textField가 잘 올라왔다가도 위에 테이블 뷰를 건드리면 텍스트 뷰가 또 사라지는 문제가 있었다. 기존 코드에서는 보통 TextField만 올리지 않고 전체 view를 모두 올려버리기 때문이다. 아래는 stackOverFlow 에서 검색해서 얻은 코드이다. 위 코드에서 내용중에서 키보드가 나올 것 같으면, viewController의 self.view의 위치를 키보드 높이만큼 계산해서 올려버리는 것이다. 그런데 기존 뷰에 TableView가 있는 경우, Tableview 부분을 클릭해서 스크롤을 해보면 키보드는 그대로 있는데 TextField는 원래 자리로.. 2021. 6. 2.