본문 바로가기

면접질문정리/Swift문법

(7)
[Swift] Swift성능 개선을 위한 요소 3가지(Understanding Swift Performance, WWDC 2018 ) UnderStanding Swift Performance [목표 및 알아볼 주제들] 오늘은 성능을 사용해 디자인 공간을 좁힐 수 있또록 권한을 주는것이 목표이다. 카일: 경험상 성능영향을 고려하면 더 관용적인 솔루션을 찾는데 도움이 되는경우가 많다. 따라서 우리는 주로 성능에 중점을 두며 모델링에대해 조금 만져볼것이다. 오버헤드에 대한 멘탈모델을 심화하기위해 구조체와 클래스를 사용해 일부코드를 추적해볼것이다. 그다음 정리하기위해 배운내용을 적용하는 방법을 살펴볼 것입니다. 후반에는 프로토콜 지향프로그래밍의 성능을 평가할 것입니다. 프로토콜 및 제네릭과같은 고급 Swift의 기능의 구현을 살펴보고 모델링 및 성능 영향을 더 잘 이해해볼 것이다. 빠른면책조항: 우리는 Swift가 사용자를 대신해 컴파일하고 ..
[ing] Closure 값 캡쳐를 사용하는 이유(ex async와 sync) 주로 고차함수나 비동기작업하는데 클로저를 많이 사용하는데 클로저를 통해 비동기 콜백을 작성할때 현재 상태를 미리획득해두지않으면 실제로 클로저의 기능을 실행하는 순간에는 변수가 nil인상태이거나 메모리에 존재하지않는 경우가 발생할 수 있다. 이때. 필요한 것이바로 클로저의 값 캡쳐기능이다. 우리가 구조체 메서드내 dispatchQueue.global().sync메서드내에서 다른 타입의 변수를 호출하면 에러가 발생하지않음 왜? main thread가 진행될동안 다른 thread에 rock이 걸리기때문에 현재 클로저내에서 값을 바꾸는 것외에는 다른스레드를 통해 바뀔일이 없다. 그런데 async를 선언하면 이와같은에러메세지가 발생한다. “Escaping closure captures mutating ‘self’..
[Swift] 메서드명을 지을때 get을 지향하라는 말은 출처가 어딜까 ? https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingMethods.html#//apple_ref/doc/uid/20001282-1001751-BCIJHEDH Naming Methods Naming Methods Methods are perhaps the most common element of your programming interface, so you should take particular care in how you name them. This section discusses the following aspects of method naming: General..
[Swift] Protocol Oriented Programming Protocol oriented Programming 스위프트의 핵심 패러다임 중 하나 예전에 옵젝씨에서 단지기능의 청사진 역할 주로 Delegate, DataSource 현재 protocol extension이 가능해졌다. 특정타입이 할일을 명시해주는 동시에 역할을 해주는 것까지 가능해짐 // MARK: 프로토콜 기본구현 protocol LayoutDrawable { func drawsomeLayout() } class MyView: UIVuew, LayoutDrawable { } extension LayoutDrawable { func drawsomeLayout() { //... } } 이게무슨장점이있는지 ?? 저 기본구현을 어떤 클래스나 구조체 열거형이라도 프로토콜을 명시해주면 프로토콜에 있던 기능..
class의 성능을 향상 시킬수 있는 방법들을 나열해보시오. - Reference https://corykim0829.github.io/swift/Understanding-Swift-Performance/# [Swift] 스위프트 성능 이해하기 (1) - struct와 class의 성능 차이 struct와 class의 성능에 대해 자세히 알아보자 corykim0829.github.io # ARM 앎을 기억하자. - Allocation - 인스턴스생성 위치 , Stack or Heap - Reference Counting - 인스턴스를 통해 레카 발생 수 - Method Dispatch - 인스턴스로 메서드를 호출했을때 메소드 디스패치가 정적인지 동적인지 위 세가지를 중점으로 파악해보자 1. Heap allocation 피하기 2. Reference Counting..
COW(Copy On Write)는 어떤 방식으로 동작하는지 설명하시오. - Reference https://levelup.gitconnected.com/copy-on-write-in-swift-1faf488e2072 Copy-on-Write In Swift Swift value types are backed by reference types levelup.gitconnected.com COW(Copy On Write)란?? 데이터 복사시 실제로 값을 복사되지 않고, 동일한(원본의) 값을 참조하다가 데이터 변경이 발생될 시에 복사해 값을 변경하는 기법이며 데이터를 효율적으로 관리해주는 기능이다. # 왜 스위프트는 언어를 설계할때 다른언어와 달리 컬렉션을 value type으로 설계했을까 ??? 이유가 무엇일까 ?? => 이유는 추론하기가 쉬워서 이다. 코드 베이스의 다른 부분..
struct와 class와 enum의 차이를 설명하시오. 1. 가장 큰 차이점은 struct와 enum은 값 타입이고 class는 참조 타입입니다. 이것을 확인할 수있는 가장 직관적인 방법은 인스턴스를 할당해보면 된다. 상황 - A 인스턴스를 생성하고 값을 할당한다. 이를 B인스턴스에 할당을 한다. 참조타입 - A와 B의 인스턴스의 값이 동일하게 나온다. 값타입 - A와 B의 인스턴스의 값이 다르게 나온다. 다른 이유는 참조타입은 값의 주소를 저장하고 값타입은 값을 복사하여 저장하기 때문이다. 클래스는 A라는 인스턴스의 주소값을 B에 전달한거기 때문에 A,B 모두 값을 불러올때는 주소를 통해서 값을 불러온다. 그렇기 때문에 값이 같게 나오는 것이다. 구조체는 A라는 인스턴스의 값을 B라는 인스턴스에 복사하여 값을 전달 했기때문에 각각 다른 데이터를 가지게된다...