class와 struct의 차이점과 중요성

syeony·2024년 7월 25일
0

swift

목록 보기
6/13

class와 struct의 차이

  • class: 참조타입 - 연결되어있다
  • struct: 값 타입, 값이 복사된다 (init 기본 제공) - 연결되어있지않다 다른 객체 생성 가능

class에는 상속 개념이 있다.

똑같은 값이 들어가는것을 막기 위해서 상속

struct는 상속 불가

토큰

사용자 토큰을 만들면

홈페이지, 마이페이지 등 여러 페이지와 연결하는데,

보통 엑세스토큰의 만료기간을 1일로 잡아놓는다

앱을 종료하지 않고 이틀 뒤에 들어오면 토큰 재발급을 해야한다

재발급을 한번에 할 수도 있는데, 이때 토큰이 한번에 갱신이 되야하는데

잘 안될 수 있다.

그래서 이 토큰 공유자원을 잘 동기화를 시켜줘야한다.

순차적으로 잘 처리할 수 있도록!

그래서 class와 struct의 개념이 중요하다.

optional

있을수도있고 없을수도있다

nil을 넣어도 된다

weak를 쓰지 않으면 strong으로 강한 참조가 되서

참조를 할당하면 참조가 1씩 증가한다

그래서 denit이 되지 않는다

weak키워드를 사용하게되면 참조를 하긴하는데 카운트는 증가시키지않는다

카운트가 0이되면 denit이 호출된다

일반적으로 강한 참조로 생성하게 되는데, 강한 참조를 추가하게되면 메모리에 계속 남아있기 때문에 메모리누수가 발생할 수 있다

이런것들을 잘 관리하는게 개발자의 중요한 업무가 되겠다!

참조카운트를 증가시키지않으면서 자동으로 메모리를 해제하고싶다면 weak라는 키워드를 붙여주면 된다

대신 weak는 항상 optional타입으로 만들어줘야한다
안그럼 compile error를 발생시킨다

수정) delegate(AnyObject를 상속받은 프로토콜을 준수한 객체)를 weak로 선언하지 않았다고 해서 컴파일 에러가 나지는 않는다

optional타입의 초기값은 nil값이기 때문에 신경?써야한다

Q. class를 사용하는 이유가 토큰을 만들때 정확하게 뭐 때문에 사용하는지 헷갈립니다

class는 상속을 할 수 있다보니까 view controler에 대한 기본 설정을 해줄때

navigationbar같은건 매번 설정할 필요가 없으니까 하나 class로 만들어놓고 상속을 받는거다.

화면마다 navigationbar에 있는 글자는 달라질 수 있으니까 이건 오버라이딩(다형성)으로 설정할 수 있다

  • 재사용 가능한 코드(코드 중복 방지)
  • 유지보수성
  • 확장성(extention?)

access토큰이 만료됐을때

5군데에서 쓴다고 하면 메모리도 5번 올라가고 동기화가 제대로 안될 수도 있다

그래서 이런 공유자원관리차원에서 class를 사용한다.

class는 하나만, 참조변수는 여러개 만들어서 메모리는 하나만 들고 공유되는 자원을 동시에 접근할 수 있다!

동기화가 잘 될 수 있도록…

profile
모바일 어플리케이션, cross platform과 iOS에 관심이 많은 개발자 오승연입니다

0개의 댓글