분류 전체보기
-
언제 class 대신 struct 를 사용할까?개발/Swift 2021. 11. 14. 16:30
[iOS] Swift Modern Collection View & MVVM 패턴 가이드 강의 | 덤벨로퍼 - 인프런덤벨로퍼 | MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., Swift iOS UI, 제대로 다루는 핵심 기술! 📲 iOS Swift 레이www.inflearn.com swift에는 class 와 struct 가 있다. 둘의 차이는 쉽게 크게 이렇다.class 는 상속을 받을수있지만 struct 는 상속이 불가한점class 는 참조 타입이지만 struct는 값 타입인점 참조타입과 값타입에 대해 대표적인 차이점으로두개의 변수에 참조 타입을 할당할때 하나의 변수만 바꿔도 두..
-
메모리 구조 (code,data,stack,heap)개발/프로그래밍 2021. 11. 14. 14:52
메모리는 코드, 데이터, 스택, 힙 으로 구성되어있다. 코드는 개발자 작성한 코드가 바이너리 형태(이진법) 으로 Read-only 로 저장된다. 데이터는 전역변수 와 static 변수가 저장된다. 프로그램 시작과 함께 메모리에 할당되고 프로그램 종료시 소멸된다. 스택은 지역변수/매개변수가 저장된다. 함수호출시 메모리에 할당되고 함수 종료시 소멸된다. 코드 / 데이터 / 스택은 모두 컴파일타임에 메모리 크기가 결정된다. 힙은 클래스 인스턴스나 클로저같은 "참조 타입의 값" 의경우 힙에 할당된다. 따라서 코드,데이터,스택 과 달리 런타임시 메모리 크기가 결정된다. 개발자가 할당/해제 하는 영역이다. 이를 동적 할당이라고하며 매모리 해제를 해주지 않는경우 "메모리 릭" 이 발생한다. swift 는 직접 해제 ..
-
객체지도개발/프로그래밍 2021. 11. 7. 19:57
소프트웨어는 기능과 구조로 구성된다. 기능은 사용자가 필요로 하여 사용하는 것이고 구조는 해당 소프트웨어가 어떻게 구성되는가 이다. 기능을 위주로한 개발과 구조를 위주로한 개발의 차이점은 구조를 위주로 한 개발이 더 새로운 기능에대한 유연한 대처와 범용성 그리고 재사용성이 가능하다는 것이다. 새로운 기능에 대해 고려하지 않는다면 필요한 기능만 잘 돌아가면 되지만 미래에 예측할수 없는 새로운 변화에대해 대처하기 위해서는 구조를 위주로한 개발을 해야한다. 내가 원하는 목적지에 도달하기위해 지나가는 사람에게 길을 물을수도 있지만 지도를 사용해 목적지에 도달할수있다. 지도라는 구조를 사용해 목적지에 도달하는 기능을 수행한다. 길을 묻는것은 하나의 목적지만 갈수있지만 지도라는 구조가 있다면 누구든지 어디에도 갈수..
-
[객체지향의 사실과 오해-2] 역할,책임,협력,책임주도 설계개발/프로그래밍 2021. 10. 30. 17:03
객체지향 설계는 중요하게 책임, 역할, 협력으로 구성된다. 이상한 나라의 앨리스에서 재판을 하는 이야기를 보면 왕이 재판을 주관하여 재판이 진행이되는데 왕이 토끼에게 모자장수(증인)을 부르라 명하고 토끼는 증인을 불러와 증인이 증언을 하는 내용이 있다. 여기서 이 각 객체들은 협력을 통해 재판을 진행한다. 그리고 이 협력은 요청과 응답으로 이루어진다. 1. 누군가 왕에게 재판을 요청한다. 2. 왕이 토끼에게 (모자장수)증인을 불러올것을 요청한다. 3. 토끼는 증인에게 재판에 입장을 요청한다. 4. 증인은 재판 입장에 응답한다. 5. 증인은 왕에게 증언을 응답한다. 여기에서 각 객체가 수행하고 있는 요청과 응답은 각 객체의 책임을 의미한다. 토끼는 증인을 불러올 책임을 가지고있고 증인은 증언을 할 책임이 ..
-
[Swift] 클래스의 init 파헤치기개발/Swift 2021. 10. 18. 17:14
구조체에서 init struct에서 init 메소드를 구현하지않아도 그안의 프로퍼티에따라 init 함수를 사용할수있다. "memberwise initializer" 를 제공하기 떄문이다. struct Car { let brand: String let price : Int } let car = Car(brand:"KIA", price:3000) 클래스의 init 에서는 designated init / convenience init 이렇게 구분된다. 쉽게 designated는 클래스의 찐 init 이고 convenience 는 몇개의 프로퍼티를 init과 다르게 하고싶을때 designated init을 부르고 바꾸는 식이다. class Car : Vehicle { var brand: String var pr..
-
[객체지향의 사실과 오해-1] 객체,캡슐화,추상화개발/프로그래밍 2021. 10. 16. 17:29
흔히 커피를 주문할때 필요한 사람은 손님과 캐시어 그리고 바리스타로 구성된다. 손님은 커피를 주문하고 캐시어는 바리스타에게 주문을 알려준다. 그리고 바리스타는 커피를 제조할것이다. 이 사람들을 객체로 생각해보자 각 객체는 역할과 책임을 다한다. 손님은 주문을 할 역할과 책임, 캐시어는 주문을 받아 바리스타에게 커피를 요청할 역할과 책임 그리고 바리스타는 커피를 제조할 역할과 책임을 가진다. 그리고 각 객체들은 각자의 역할과 책임을 가지며 협력한다. 또 각 객체들은 자율성을 가지고있다. 자율성이란 자기 스스로 원칙에따라 일을하거나 스스로 통제 절제하는것이다. 예로 어떻게 주문할지 어떻게 커피를 만들지 의 문제는 각 객체가 스스로 판단하여 행동한다. 그것을 자율적이라 표현한다. 각 객체들이 협력을 하기위해 ..
-
2021 9월 투자복기카테고리 없음 2021. 10. 10. 16:47
9월은 8월에 겪었던 하락장을 한번 더 겪었다. 따라서 코스피 지수가 2900까지 내려왔고 내 보유 주식또한 조정을 받고있다. 9월 초에는 약간의 반등이있었다 그때 대한제강이 일시적으로 올라 일부 매도를 하였으며 다시 원래 가격으로 돌아와 다시 매수를 했다. 이게 9월에 매매한 전체내역이다. 현금비중 인플레이션, 금리인상, 공급부족 등의 이슈로 스태그플레이션 불안감이 조성되어 지수가 많이 내려왔으나 공급 문제가 앞으로 천천히 해결될것이라 믿는다. 그리고 위드 코로나의 영향으로 경기가 회복될것이라 믿는다. 따라서 현금 비중을 55% -> 50% 로 줄였다. 매수 내역 계획했던대로 엘비세미콘 , 하이트진로를 매수했다. 엘비세미콘은 19% 하이트진로를 12% 보유하고있다. 현대차와,하이브,대한제강 역시 추가 ..
-
[Swift] 동적디스패치(Dynamic Dispatch) 와 Private & final 사용카테고리 없음 2021. 10. 7. 14:45
디스패치란 어떤 메소드를 쓸지 결정하고 사용하는 과정이다. class MotherClass { func printHello() { print("hello") } } class ChildClass: MotherClass { } let helloClass: MotherClass = ChildClass() helloClass.printHello() 위의 코드를 보면 printHello() 메소드는 MotherClass 에 구현이 되어있으며 ChildClass 는 MotherClass를 상속 받고있지만 printHello() 메소드를 오버라이드 하지 않았다. helloClass 객채는 ChildClass 이지만 이런경우 마지막 helloClass.printHello() 메소드는 MotherClass의 print..