본문 바로가기
개린이 이야기

파이어 베이스, 정적키워드 이해, 메모리 기초 등

by iOS 개린이 2022. 4. 11.

1. 신규 사용자 등록

-사용자가 회원가입을 할 때 아이디, 비밀번호 정보 등이 fire base로 이동하며 fire base는 사용자의 이메일을 기록하고 암호를 암호화한다.  이 작업이 완료될 때 채팅 화면으로 이동한다.

-사용자가 등록을 할 때 fire base에서 요구하는 아이디, 비밀번호 작성 규칙이 있다. 이 오류가 나왔을 때 사용자의 화면에 나올 수 있도록 하려면 localizedDescription을 사용한다. 

 

2. 사용자 로그아웃

-앱을 테스트할 때 chat view로 이동하기 위해서는 계속 아이디와 비밀번호를 입력해야 하는 상황이 발생한다. 이 수고를 덜기 위해서 등록된 아이디와 비밀번호를 main storyboard에 미리 작성해 둔다. 

 

-navigationController.popToRootViewController(animated: true) : 우리가 log out 버튼을 눌렀을 때 가장 처음 화면으로 돌아가게 해주는 코드이다.

-navigationItem.hidesBackButton : chat view에는 로그아웃 버튼이 있기 때문에 사용자에게 혼란을 덜기 위해서 뒤로 돌아가기 버튼을 지워주는 코드이다. 

 

3. 상수 파일 사용 및 정적 키워드 이해

-우리가 코드를 짤 때 string 유형의 문자를 자주 사용하면 위험하다. 왜냐하면 철자 하나만 틀려도 앱에 충돌이 생기기 때문이다. 따라서 우리는 구조체를 통해서 상수 프로퍼티를 만들것이다. 

-프로퍼티를 만들 때 맨 앞에 static을 적어주면 인스턴스를 따로 만들지 않아도 바로 .property name 사용이 가능하다. 

-Swift) 프로퍼티 정복하기 (3/4) - 타입 프로퍼티(Type Property) (tistory.com)

 

4. 메모리에 관하여 

-프로그램이 실행될 때 운영체제에서 메모리에 프로그램을 위한 공간을 할당해준다. 이 공간은 코드, 데이터, 힙, 스택 영역으로 나누어져 있다. 

-컴파일: 고급언어로 작성된 프로그램을 기계어로 번역하는 것을 컴파일이라고 하고, 이것을 처리하는 프로그램을 컴파일러라고 한다.

-런타임: 컴퓨터 프로그램이 실행되고 있는 동안 동작을 말한다. 

 

-코드 영역 : 우리가 작성한 소스 코드가 기계어 형태로 저장된다. 컴파일 타임에 결정되고, 중간에 코드가 변경되지 않도록 read-only 형태로 저장된다. 

 

-데이터 영역 : 전역변수와 static 변수가 저장되는 곳으로 프로그램 시작과 동시에 할당되고, 프로그램이 종료 되어야 메모리가 해제된다. 실행 도중에 변수 값이 변경될 수 있기 때문에 read-write로 저장된다.

 

-힙 영역: 프로그래머가 할당/해제 하는 메모리 영역이다. 프로그래머는 malloc,calloc으로 힙에 메모리를 할당할 수 있으며, 이를 동적 할당이라고 한다. 

사용하고 난 후에는 반드시 메모리 해제를 해줘야 한다. (memory leak이 발생)

code, data, stack 중 유일하게 런타임 시에 결정되기 때문에 데이터의 크기가 확실하지 않을 때 사용한다. 

클래스 인스턴스나 클로저 같은 참조 타입의 값들은 모두 힙에 자동으로 할당된다.

 

-스택 영역: 함수 호출 시 함수의 지역변수, 매개변수 리턴 값 등이 저장되고, 함수가 종료되면 저장된 메모리도 해제된다. 컴파일 타임에 결정되기 때문에 무한하게 할당할 수 없다. 

스택은 LIFO(last in, first out) 데이터 구조로 먼저 생성된 변수가 가장 나중에 해제된다. 

스택은 너무 큰 메모리는 할당할 수 없기 때문에 데이터의 크기를 모르거나 너무 큰 데이터는 힙에 할당해야 한다.

만약 스택에 너무 많은 메모리를 할당하게 되면 스택 오버 플로우가 발생한다. 

 

 

 

참고: iOS) 메모리 구조 (Code, Data, Stack, Heap) (tistory.com)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'개린이 이야기' 카테고리의 다른 글

깃허브  (0) 2022.04.19
커맨드 라인  (0) 2022.04.14
2022년 04월 06일의 이야기  (0) 2022.04.06
2022년 04월 04일의 이야기  (0) 2022.04.04
2022년 03월 22일의 이야기  (0) 2022.03.22