Swift에서 말하는 안정성이란?

피터·2023년 10월 13일
0

먼저 프로그래밍에서 말하는 안전이란 무엇일지 궁금했다.
그래서 찾아보니 안전하다는 것은 개발자에게 적용되는 말이다.

안전한 언어란 무엇일까?

프로그램에서 발생할 수 있는 오류 중에서 일부 유형의 오류를 프로그램 설계가 원칙적으로 방지해준다는 뜻이다.

💡 프로그램 설계?
Xcode에서 컴파일러에 해당하는 것 같다!

  1. 옵셔널 타입: Swift는 값을 포함하거나 포함하지 않을 수 있는 옵셔널 타입을 제공하여 널 포인터 예외를 방지한다.

    💡 널 포인터 예외(null pointer exception)
    프로그램에서 어떤 참조 변수가 아무런 객체도 참조하지 않고 있을 때 (즉, 널(null) 상태일 때) 그 참조를 사용하려고 시도할 때 발생한다.

  2. 타입 안전성: Swift는 강력한 타입 시스템을 갖고 있어 변수 및 상수에 대해 명확한 타입을 지정해야 한다. 이는 타입 관련 오류를 미리 방지하는 데 도움이 된다.

  3. 자동 메모리 관리: Swift는 ARC(Automatic Reference Counting)을 통해 메모리 관리를 자동화하여 메모리 누수 및 다른 메모리 관련 문제를 예방한다.

    • 메모리가 해제된 이후에는, 해당 메모리에 대한 접근이 일어나지 않는다는 것을 보장

    💡 Swift와 같은 메모리 관리가 자동화된 언어에서는, ARC(Automatic Reference Counting) 등의 메커니즘을 통해 dangling pointer 문제가 대부분 방지됩니다. ARC는 객체의 참조 횟수를 추적하고 참조 횟수가 0이 되면 메모리를 자동으로 해제합니다. 이 때, 다른 포인터가 해제된 메모리 영역을 참조하지 않도록 관리되므로 [[dangling pointer]] 문제가 발생하지 않습니다.

  4. 오류 처리: Swift는 오류 처리 기능을 제공하여 예외 상황을 처리하고 복구할 수 있도록 한다.

그 외

Swift는 잘못된 메모리 접근을 막기 위해 다음과 같은 기능을 제공한다.

  • 모든 변수가 사용되기 전 초기화 되는 것을 보장
  • 초기화하지 않고 변수를 사용하면 컴파일 단계에서 잡아냄
  • 배열의 범위를 넘어가는 접근을 검사하고, 범위 밖 접근에 대해 에러를 발생시키는 것을 보장
profile
iOS 개발자입니다.

0개의 댓글