본문 바로가기

전체 글

(34)
Metatype(.self, .Type, .Protocol) 오늘 강의를 듣는데 .self가 나오면서 메타타입이 나오는거에요 그래서 어 그게 머지? 하고 찾다가 시작된 블로그…글..임미다.. 글을 쓰기전에 앞서서… 소들이님이랑 수진날진님.. 블로그로 이해한 후 작성하려 했으나…. 쓰다보니까 따라쓰기가 되어 가더라구요 ㅠㅠ(너무 잘 정리하셔따..) 그래서 혹시 보시는 분들은 ㅇ아래 링크타고 들어가서 보시면 훨~씬 이해가 잘 되실껍니다!!! Swift) Metatype(.self, .Type, .Protocol) 정복하기 (1/2) Swift) Metatype(.self, .Type, .Protocol) 정복하기 (1/2) 안녕하세요, 소들입니다 :D 오늘은 바로 2월 1일 설날이랍니다 눈 뜨자마자 갑자기 Metatype 포스팅이 하고 싶어져서 포스팅을 하고 있는 사..
Struct는 뭐고 어떻게 사용할까? 구조체와 클래스 (Structures and Classes) 구조체와 클래스 (Structures and Classes) - Swift 실제로 값 타입에 대해 이전 챕터에서 광범위하게 다뤘습니다. 실제로 Swift에서 정수, 부동 소수점, 부울, 문자열, 배열 그리고 딕셔너리와 같은 기본 타입의 모두는 값 타입이고 구조체로 구현 bbiguduk.gitbook.io 오늘은 구조체에 대해서 알아보겠습니다! 저번에는 구조체, 클래스, 열거형을 비교하면서 간단하게 알아봤었는데 구조체에 대해 좀 집중적으로 볼게요! Struct 상수나 변수 메서드 등을 내부적으로 정의해 사용자 정의 타입을 만들 때 사용되는 타입 인스턴스로 생성해서 직접 사용할 수 있음 공식문서에서 제공하는 구조체의 기능은 다음과 같습니다. (클래..
Optional Optional 옵셔널(Optional)은 언어적인 차원에서 안전성을 높이기 위해 사용하는 개념임 간단하게 말하면 nil 타입을 사용할 수 있는 타입들을 Optional Type이라고 부름! nil 값이 없음을 의미하는 값 이거는 정수형의 0이나 문자열의 “”(빈문자열) 과는 다르게 진짜 값이 없음을 의미함 위 딕셔너리 처럼 값이 없을 때 오류를 처리하는 것이 아니라 nil을 내보냄으로써 안전성을 높힘 이러한 nil 값을 반환하기 위해서는 해당 타입이 옵셔널 타입이어야 함! 그럼 어떻게 옵셔널 타입을 선언할 수 있을깎??? 타입 앞에 ? 를 붙혀주면 끝임 var result: Int? = nil 위와 같이 하면 nil 값을 가질 수 있는 Optional Int가 되는거임 따라서 nil 또는 nil이 아닌..
AnyObject AnyObject | Apple Developer Documentation AnyObject | Apple Developer Documentation The protocol to which all classes implicitly conform. developer.apple.com AnyObject는 특정하지 않은 타입에 대해 동작하도록 만들어진 타입임 이와 유사한 타입으로 Any도 있습니다! 그리고 타입 캐스팅과도 살짝 연관이 있는데 타입 캐스팅을 하려면 상속관계에 있어야 하잖아요?? 근데 Any나 AnyObject 타입일 경우는 상속 관계가 아니더라도 ㄱ가능해집니다! AnyObject 모든 클래스가 암시적으로 준수하는 프로토콜 클래스, 클래스 타입, 클래스-only 프로토콜에서 타입으로 사용할 수 있..
UIKit Delegate 패턴 뿌수다 부서지기... 이번주부터 UIKit공부를 시작했는데 오늘 delegate 개념이 나왔다… 사실 봤던 기억은 나는데 헷갈리기도 하고 개념이 정리가 안되는거임… 그래서 미루고 미루다가 정리하려고 하는데… 두달 전에도 정리하다가 말았네… 오늘은 진짜 해야지… 진ㅉ... 로... Delegate 가 뭘까요 사실 유킷 공부하다보면 지이이인짜 많이 쓰이는게 delegate 패턴인듯(내 생각임) 그리고 나처럼 처음 공부하는 사람은 지이이인짜 헷갈리는 게 이거인거 같음 뭔가 알듯 말듯 알쏭달쏭 정리가 안됨 Delegate는 번역하면 대리자 라는 뜻임. 그래서 간단하게 표현하면 객체와 객체 사이의 소통을 대신 해주는 역할을 수행한다고 볼 수 있음 그리고 프로토콜(대리자)을 채택해서 실제로 구현해서 사용함 내가 이해 한 바로는 만약에 ..
Convenience init 이번에는 Convenience init에 대해 알아보겠습니다! 생성자에 대한 모든 걸 다룰려면 글이 엄청 길어지니깐 간단하게 설명해보겠습니다. 생성자(initializer)가 먼데요 Struct, Class, Enum의 인스턴스(객체)를 생성하는 것 모든 프로퍼티가 포함되어야 하고, 기본값이 초기화되지 않으면 인스턴스는 생성되지 않음! → 인스턴스를 만들려면 모든 프로퍼티가 값을 가져야 한다는 말임!!!!!!!!!!1 그럼 초기화 어케 하는데요? 구조체, 클래스를 초기화하는 방법은 다음과 같습니다. 프로퍼티를 만들자마자 기본 값을 넣어주기 옵셔널로 선언하기 → 값이 없으면 nil로 초기화되므로 init() 함수(생성자) 를 이용해서 값 설정 근데 여기서 살짝 의문이 생길수도 있음 struct 할 때는 초..
Copy On Write는 어떤 방식으로 동작할까? Copy On Write(COW)는 뭐지? Swift를 기준으로 작성하고 있지만 여기서만 쓰이는 건 아니고 프로그래밍 언어 대부분에서 사용하는 성능 최적화 매커니즘임 Struct 설명에서도 나왔지만 Struct의 경우 값 복사를 하자나요? 이때 값 복사를 하는 방법이 COW임 그래서 Copy-on-Write가 모라는거임? 값 복사를 수행할 때 최적화를 위해서 사용한다는 말임! 근데 여기서 복사 동작을 수행할 때 무조건 일단 복사를 하는게 아닌거임! (복사를 하지만 복사를 안함) 원본을 복사해서 복사본이 생겼다고 가정해 보겠음 그러면 복사본은 원본의 값을 복사해서 가지고 있어야 하잖아요? 맞죠? 만약에 이때 수정된 값이 없다면?? 그래서 복사본과 원본이 동일한 값을 가지고 있다면 복사하지 않음!!!! 복사..
Class의 성능을 향상 시킬 수 있는 방법 Class의 속도가 Struct에 비해 느린 이유가 뭘까? Class는 Dynamic Dispatch 방식을 채택해서 함수 결정을 런타임에서 하기 때문임!!!!!!!!1 저게 뭔지 나도 잘 모르니까 이제부터 정리해 보겠음 Dispatch 어떤 메소드를 호출할지 결정하는 매커니즘 이게 먼말이냐면 어떤 메서드를 언제 호출할지 경정하는 방법이라는 거임 이런 Dispatch는 두 가지 방법이 존재함 Static Dispatch(정적 디스패치) 함수를 컴파일 타임에 결정 얘는 컴파일을 할때 벌써 함수를 결정해버림! 그래서 런타임 시 그냥 실행해버리면 되므로 성능이 상대적으로 좋을 수 밖에 없음 Dynamic Dispatch(동적 디스패치) 함수를 런타임에 결정 스위프트에서 Class들은 각자 함수 포인터들의 배열..
Struct와 Class와 Enum의 차이 swift에서 제공하는 주요 타입인 struct, class와 enum의 차이점과 공통점에 대해서 비교해보도록 하겠습니다. Struct struct는 기본적으로 값 타입(value type)으로 데이터 전달 시 값을 복사하여 전달합니다. 복사한 값을 이용해 새로운 인스턴스를 생성하고 이는 메모리의 Stack 영역에 저장합니다. 데이터를 복사하여 전달하기 때문에 데이터의 상태 변화를 방지할 수 있고, 코드 예측에도 유리합니다. 같은 이유로 스레드 간 동시성 문제에서도 안전하고, 메모리 관리 측면에서도 유리합니다. -> 스레드 간 동시성 문제에 대해서도 알아봐야할듯 ㅠㅠ 메모리 관리 측면에서 유리한 이유는 다음과 같습니다. 복사한 값은 Stack 영역에 저장을 하게 되는데 Stack은 LIFO 방식으로 구조..
[Swift] Singleton Pattern 이번에는 싱글톤 패턴에 대해서 알아보도록 하겠습니다! 싱글톤 패턴은 디자인 패턴의 일종이잖아여?? 디자인 패턴이라 하면 코딩을 할때 어떤식으로 짤지??에 대해서 반복되는 문제들을 해결하기 위한 일종의 패턴입니다! → 소프트웨어 디자인 과정에서의 문제점을 해결하기 위한 해결책! 한번쯤 쫘아악 정리해서 알아봐야지 생각하고 있었는데 이게 이론적인 부분을 코드를 디자인할때 적용하는거라 아무리 이론을 공부해도 실제로 써보지 않으면 또 금새 까먹을꺼 같아서 미루고 있었거든여 (귀찮아서 아님) 그러던 중!! 이번에 과제를 하면서 뷰 간에 데이터를 어떻게 넘겨줄지 찾아보다가.. 싱글톤 패턴을 이용하게 되어서 한번 정리해보기로 했습니다! 싱글톤 패턴이 몬데요?? 야곰 센세의 설명 싱글턴 패턴을 따르는 클래스는, 생성자가..