iOS/질문으로 접근하는 CS문제
-
1. Subscript란 콜렉션, 리스트, 시퀀스 등 집합의 특정 멤버 엘리먼트에 간단하게 접근할 수 있는 문법입니다. 해당 문법을 사용해서 추가적인 메소드 없이 특정 값을 할당하거나 받아올 수 있습니다. 2. 이와 같은 Subscript 문법에서 String과 같은 경우에는 int형으로 접근이 불가하다는 특징이 있습니다. swift에서 String은 struct 타입이며 character들의 콜렉션이다. 위에서 얘기했듯이 subscript는 콜렉션에 접근할 수 있어야 하지만 swift에서 string에 int를 통해서 index에 접근을 할 수가 없습니다. 해당 이유는 swift에서 string은 크기가 가변적이기에 String.index 메소드를 통해서 접근을 해야 합니다. 출처 : https://v..
Subscript에 대해 서술하시오.1. Subscript란 콜렉션, 리스트, 시퀀스 등 집합의 특정 멤버 엘리먼트에 간단하게 접근할 수 있는 문법입니다. 해당 문법을 사용해서 추가적인 메소드 없이 특정 값을 할당하거나 받아올 수 있습니다. 2. 이와 같은 Subscript 문법에서 String과 같은 경우에는 int형으로 접근이 불가하다는 특징이 있습니다. swift에서 String은 struct 타입이며 character들의 콜렉션이다. 위에서 얘기했듯이 subscript는 콜렉션에 접근할 수 있어야 하지만 swift에서 string에 int를 통해서 index에 접근을 할 수가 없습니다. 해당 이유는 swift에서 string은 크기가 가변적이기에 String.index 메소드를 통해서 접근을 해야 합니다. 출처 : https://v..
2022.12.17 -
AnyObject는 클래스에서 Opaque Type(불투명한 타입)이다. 불투명 타입은 타입이 런타임 때 결정이 되기 때문에 컴파일 시점에서 먼저 결정이 될 타입의 내부 메소드를 사용할 수가 없다는 단점을 가지고 있다. 만일, 사용을 하고 싶다면 다운캐스팅을 한 뒤에 사용을 해야 한다. 출처 : https://babbab2.tistory.com/128
AnyObject에 대해 설명하시오.AnyObject는 클래스에서 Opaque Type(불투명한 타입)이다. 불투명 타입은 타입이 런타임 때 결정이 되기 때문에 컴파일 시점에서 먼저 결정이 될 타입의 내부 메소드를 사용할 수가 없다는 단점을 가지고 있다. 만일, 사용을 하고 싶다면 다운캐스팅을 한 뒤에 사용을 해야 한다. 출처 : https://babbab2.tistory.com/128
2022.12.10 -
Swift에서의 초기화 설정 방법은 기본적으로 Designated init으로 이루어진다. class Person { var name: String var age: Int var gender: String init(name: String, age: Int, gender: String) { self.name = name self.age = age self.gender = gender } } 하지만, 위와 같은 코드가 있을 때 gender는 초기화를 시키고 싶지 않다거나 age는 나중에 따로 주고 싶다거나 하는 상황이 발생할 것이다. 이럴 때 바로 Convenience init을 사용한다. class Person { var name: String var age: Int var gender: String in..
Convenience init에 대해 설명하시오.Swift에서의 초기화 설정 방법은 기본적으로 Designated init으로 이루어진다. class Person { var name: String var age: Int var gender: String init(name: String, age: Int, gender: String) { self.name = name self.age = age self.gender = gender } } 하지만, 위와 같은 코드가 있을 때 gender는 초기화를 시키고 싶지 않다거나 age는 나중에 따로 주고 싶다거나 하는 상황이 발생할 것이다. 이럴 때 바로 Convenience init을 사용한다. class Person { var name: String var age: Int var gender: String in..
2022.12.10 -
Swift에서 Copy On Write(COW)는 언제나 일어나지 않는다. A와 B라는 2개의 배열이 있고 A가 B라는 배열의 값을 복사하였을 때, 처음에 A는 B의 주소를 가르키고 있다가 A 배열에 값의 수정이 일어나면 그때 비로소 B 배열을 복사하는 과정이 일어난다. 출처 : https://sihyungyou.github.io/iOS-copy-on-write/ https://medium.com/@lucianoalmeida1/understanding-swift-copy-on-write-mechanisms-52ac31d68f2f
Copy On Write는 어떤 방식으로 동작하는지 설명하시오.Swift에서 Copy On Write(COW)는 언제나 일어나지 않는다. A와 B라는 2개의 배열이 있고 A가 B라는 배열의 값을 복사하였을 때, 처음에 A는 B의 주소를 가르키고 있다가 A 배열에 값의 수정이 일어나면 그때 비로소 B 배열을 복사하는 과정이 일어난다. 출처 : https://sihyungyou.github.io/iOS-copy-on-write/ https://medium.com/@lucianoalmeida1/understanding-swift-copy-on-write-mechanisms-52ac31d68f2f
2022.12.10 -
1. final과 private를 사용하자. swift에는 Static Dispatch와 Dynamic Dispatch가 있다. Dispatch란 어떤 프로퍼티나 함수를 호출할지를 결정하는 과정인데 Static과 Dynamic을 통하여 언제 실행을 할지를 결정한다. Static Dispatch Dynamic Dispatch 속도 빠름 느림 실행되는 위치 컴파일 타임 런 타임 사용하는 구조체(?)들 struct class 쉽게 설명하자면 Class는 Dynamic Dispatch를 사용하고 그렇기에 성능이 Struct보다 저하된다고 생각하면 쉽다. 그렇다면 반대로 Static Dispatch를 사용해서 Class를 실행하면 속도가 빨라질텐데 어떻게 Static Dispatch를 사용할 수 있을까? 답은 상..
Swift에서 class의 성능을 향상시키는 방법을 서술하시오.1. final과 private를 사용하자. swift에는 Static Dispatch와 Dynamic Dispatch가 있다. Dispatch란 어떤 프로퍼티나 함수를 호출할지를 결정하는 과정인데 Static과 Dynamic을 통하여 언제 실행을 할지를 결정한다. Static Dispatch Dynamic Dispatch 속도 빠름 느림 실행되는 위치 컴파일 타임 런 타임 사용하는 구조체(?)들 struct class 쉽게 설명하자면 Class는 Dynamic Dispatch를 사용하고 그렇기에 성능이 Struct보다 저하된다고 생각하면 쉽다. 그렇다면 반대로 Static Dispatch를 사용해서 Class를 실행하면 속도가 빨라질텐데 어떻게 Static Dispatch를 사용할 수 있을까? 답은 상..
2022.12.02 -
질문 : ARC는 컴파일 타임때 실행이 된다. 하지만, 힙 영역은 런 타임떄 실행이 되는데 컴파일 타임때 실행이 된 ARC가 어떻게 힙 영역을 관리할 수가 있는가? 답 : ARC는 컴파일 타임때 코드 분석을 통하여 retain, release count를 적절한 위치에 삽입시켜줍니다. 해당 코드는 런 타임때 실행이 되어서 reference count를 증감시켜주다가 count값이 0이 되면 deinit을 통해서 해제시켜줍니다.
ARC는 어떻게 메모리를 관리할수 있는가?질문 : ARC는 컴파일 타임때 실행이 된다. 하지만, 힙 영역은 런 타임떄 실행이 되는데 컴파일 타임때 실행이 된 ARC가 어떻게 힙 영역을 관리할 수가 있는가? 답 : ARC는 컴파일 타임때 코드 분석을 통하여 retain, release count를 적절한 위치에 삽입시켜줍니다. 해당 코드는 런 타임때 실행이 되어서 reference count를 증감시켜주다가 count값이 0이 되면 deinit을 통해서 해제시켜줍니다.
2022.11.29