본문 바로가기

iOS121

옵셔널 [Optional] 옵셔널 - 값이 있을 수도 없을 수도 있는 것 - 오직 옵셔널 타입만 nil을 반환할 수 있습니다. - 오류의 발생 가능성이 조금이라도 있으면 옵셔널로 정의해 안정성을 높일 수 있습니다. 옵셔널 타입 - 옵셔널은 nil이거나 nil이 아닌 값만 가질 수 있습니다. nil : 실행 과정에서 오류가 발생했을 때 nil이 아닌 값 : 오류가 발생하지 않았을 때, 반환하려는 값이 옵셔널 형태로 나오는 값 사용 - 자료형 뒤에 ?나 !를 붙여 옵셔널 타입으로 정의할 수 있습니다. -? 나! 를 사용하여 옵셔널 객체 내부에 값이 대입되며, 값을 할당하지 않으면 자동으로 nil값이 됩니다. 옵셔널 해제 - 옵셔널 타입의 결괏값으로는 연산을 할 수 없습니다. - 옵셔널 값으로 나온 결과는 반드시 옵셔널 언래핑을 해줘야.. 2022. 6. 28.
프로퍼티 (Properties) 프로퍼티 정의 - 프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있습니다. - 다만 열거형 내부에는 연산 프로퍼티만 구현할 수 있습니다. - 연산 프로퍼티는 var로만 선언할 수 있습니다. - 연산 프로퍼티를 읽기 전용으로는 구현할 수 있지만, 쓰기 전용으로는 구현할 수 없습니다 - 읽기 전용으로 구현하려면 get 블록만 작성해주면 됩니다. - 읽기전용은 get블록을 생략할 수 있습니다. - 읽기, 쓰기 모두 가능하게 하려면 get 블록과 set블록을 모두 구현해주면 됩니다. - set 블럭에서 암시적 매개변수 newValue를 사용할 수 있습니다. 프로퍼티 종류 1, 저장 프로퍼티(Stored Properties) 2, 지연 저장 프로퍼티(Lazy Stroed Properties) 3, 연산 프.. 2022. 6. 27.
Struct와 Class, Enum의 차이를 설명하시오. Class - 객체라는 용어 대신 인스턴스 사용 - (인스턴스/타입) 메서드 || 프로퍼티 - 래퍼런스 형태로 공유 가능 - 단일 상속만 가능 - 참조 타입 (데이터 전달 시, 값이 아닌 메모리의 위치를 전달) Struct - Swift의 대부분의 자료형 타입은 구조체로 정의된다. - (인스턴스/타입) 메서드 || 프로퍼티 - 항상 새로운 변수의 값의 복사가 일어나, 멀티 스레드 환경에서 에러 발생확률이 적다. - 상속 불가 - 값 타입 (데이터 전달 시, 값을 복사해서 전달) Enum - 유사한 종류의 여러 값을 유의미한 이름으로 모아놓은 타입 - (인스턴스/타입) 메서드 || 연산 프로퍼티 지정 - case들이 그 자체로 값 - 상속 불가 - 값 타입 (데이터 전달 시, 값을 복사해서 전달) 구조체와.. 2022. 6. 25.
nib nib? - 유저 인터페이스 빌드를 저장하기위한 파일 - UITableViewController, UITableViewCell, UICollectionCell클래스, CustomView에서만 지원을 합니다. - Nib : 바이너리 형태 (nil파일을 컴파일하면 xml파일이 됨.) - Xib : xml형태 nib를 사용하는 곳 - UIViewController타입에서 init에 존재 - storyboard가 아닌 .nib파일로 초기화 하는 경우 - 참고로 storyboard를 이용한 초기화는 init(coder:)사용 class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } override init.. 2022. 6. 18.
Equatable Equatable - 프로토콜 - 값이 동일한지 비교하는 타입 - 클래스, 구조체, enum과 같은 타입이 채택할 수 있습니다. 사용 - Equatable를 채택하여 아래의 코드를 Int 값뿐만 아니라 String, Double, Float에도 다 적용할 수 있습니다. var some = 1 var other = 2 if some == other { // code } else { // code } - 그럼 아래의 코드와 같이 복잡한 클래스나 구조체를 만들어 비교한다면 어떻게 해야 할까요? class A { var aNum : Int init(_ aNum: Int) { self.aNum = aNum } } if A(1) == A(2) // error - 위처럼 A(1)와 A(2)가 같은지는 xcode에서 .. 2022. 6. 17.
Hashable Hashable - 정수 Hash 값을 제공하는 타입 - 프로토콜 - Set 또는 Dictionary의 Key로 Hashable을 준수하는 모든 타입을 사용할 수 있습니다. - Dictionary의 Key, Set에서 값을 찾는 기본 방법, 주로 구조체에서 사용 준수 - 구조체의 경우, 저장 프로퍼티는 모두 Hashable을 준수해야 합니다. - 열거형의 경우, 모든 Associated Values는 모두 Hashable을 준수해야 합니다. Dictionary는 Hashable - Swift에서 Dictionary는 Dictionary 형태로 쓰입니다. - Dicttionary의 유일한 제약사항은 반드시 KeyType은 해쉬 가능한 타입 이어야 한다는 것입니다. - 즉, 그 자체로 유일하게 표현이 가능한.. 2022. 6. 16.