분류 전체보기124 [18일차] Class 생성자 이해하기 (2-phase Initialization) * 상속은 언제 사용하면 좋은가? (1) Single Responsibility (단일 책임) : 하나의 클래스는 한 가지의 역할만 해야 한다. (2) Type Safety (타입이 분명해야 할 때) : 특정 조건의 타입 객체를 사용하고자 할 때 (3) Shared Base Classes (다자녀가 있다) : 동일한 행위를 다중 객체에서 사용 (4) Extensibilty (확장성이 필요한 경우) (5) Identity (정체를 파악하기 위해) * 상속된 자식 클래스는 부모 클래스의 형태와 다르게 생성할 수 있다. ex) let student1 = Student(firstName: "Mike", lastName: "Kim") let student2 = StudentAthlete(sports: ["Base.. 2020. 8. 7. [17일차] Class와 Struct를 사용해야 할 때 * 이럴 때 Struct 쓰자 (1) 두 Object를 "같다, 다르다"로 비교해야 하는 경우 (2) Copy 된 각 객체들이 독립적인 상태를 가져야 하는 경우 (3) Object의 데이터를 여러 스레드에 걸쳐 사용할 경우 (각 Object가 독립적으로 존재하므로 다중 스레드를 사용하더라도 오류가 날 확률이 낮다.) * 이럴 때 Class 쓰자 (1) 두 Object의 인스턴스 자체가 같음을 확인할 때 (2) 하나의 객체가 필요하고, 여러 대상에 의해 접근되고 변경이 필요한 경우 # 쉽게 사용하는 Tip) 1. 일단 Struct로 쓰자 2. 그 이후에 Class로 바꿔보자 (상황에 따라 다름) - 공식 Doc https://developer.apple.com/swift/blog/?id=10 # 실무 Ti.. 2020. 8. 5. [16일차] Class 사용 * Class와 Struct 차이 비교 - class : Heap(느림) / struct : Stack(빠름) - structure은 Copy(복사 = 별도로 관리) 개념, class는 Share(공유 = 같은 곳을 바라봄) 개념 import UIKit struct PersonStruct { var firstName: String var lastName: String var fullName: String { return "\(firstName) \(lastName)" } mutating func uppercaseName() { firstName = firstName.uppercased() lastName = lastName.uppercased() } } class PersonClass { var firs.. 2020. 8. 4. [15일차] Property vs Method * Property vs Method 을 선택 기준 : 동일한 결과값을 전달할 때 무엇을 사용하는 것이 효율적인가? Q) Setter가 필요한가? A) Yes - "Computed Property" Q) 계산이 많이 필요한가? 혹은 DB Access나 File IO가 필요한가? A) Yes - "Method" No - '"Computed Property" * Method : 인스턴스에 귀속되어서 사용되는 것 - mutating : struct 인스턴스 변수가 함수내에서 변형될 때 '함수 선언부'에 적어줘야 한다. * extension : 기존에 만들어진 struct에서 기능을 확장하고자 할 때 사용 Tip) 확장 시 필요한 함수명을 미리 적어놓고, 함수 선언문을 만들기 2020. 8. 4. [알뜰Tip] Debug Mode 반복 발생 오류 해결법 Android Studio에서 버그 개선을 위해 디버그 모드(Shift + F9)를 이용할 때가 자주 발생한다. 그런데, 어느 순간부터 일반 앱 실행(Shift + F10)을 했는데도 자동으로 디버그 모드로 실행되어서 종종 앱을 재설치해서 자동 디버그 실행 모드를 해제하는 경우가 많았다. 이럴 때, 해결책은 CMD(커맨드) 창에서 "adb shell am clear-debug-app" 명령어를 입력하면 깔끔하게 해결된다. 2020. 8. 1. [14일차] Structure Property (구조 프로퍼티) 학습 * Property Observer (프로퍼티 감시자) : willSet(값이 변경되기 직전), didSet(값이 변경된 직후) 프로퍼티 변경을 감시 * Computed Property (연산 프로퍼티) : set, get 저장된 값을 연산(가공)하여 반환 * lazy variables (게으른 변수) : 필요하지만 실제로 사용되기 전에는 미리 불러오지 않는 형태의 변수를 의미 (불필요한 메모리 낭비 줄이는 효과) import UIKit struct Person { var firstName: String { // willSet : 변수 변경이 이루어지기 전에 확인 (firstName --> newValue)로 변경 willSet { print("willSet: \(firstName) --> \(newVa.. 2020. 7. 31. 안드로이드 10 버전 (targetSdkVersion: 29) 타겟팅 안드로이드 11 버전이 베타 런칭을 진행하면서, 구글의 안드로이드 업데이트 버전 정책 또한 상향 조정되었다. - 2020년 8월 3일 : 새로운 앱은 Android 10(API 29) 이상을 타겟팅 - 2020년 11월 2일 : 모든 앱 업데이트는 Android 10(API 29) 이상을 타겟팅 GCMNetworkManager : - 2020년 4월 : FirebaseJobDispatcher 라이브러리 보관처리 및 지원 중단 예정 - 2020년 11월 : GCMNetworkManager 라이브러리 더 이상 업데이트 및 지원 중단 예정 ▶ 사용자 저장소 접근권한 허용되더라도, 외부 파일 접근 불가능 (방법1 : 접근하기 위해서는 해당 파일이 앱이 설치된 폴더로 복사해서 가져와야 함. 방법2 : Androi.. 2020. 7. 31. [13일차] Structure(구조)와 Class 일반적으로 Swift에서 객체 구조는 아래와 같다. Object = Data + Method * Structure vs Class Structure Class Value Types Reference Types Copy Share Stack Heap - Structure : 관계 있는 데이터를 모아서 표현할 때 사용 - Class : 데이터를 모아서 표현하되, 같은 데이터를 참조할 때 사용 왜 Structure 구조를 사용해야 할까? 위와 같이 첫번째 줄처럼 변수를 일렬로 나열하는 것보다, 두번째 줄처럼 사람이 이해하기 쉬운 구조로 나누어서 변수를 표현해주는 것이 가독성이 좋으며 협업이나 리펙토링 과정에서도 코드파악에 용이하다. 아래는 Structure(구조) 형식을 이용하여 "제일 가까운 위치의 배달 가.. 2020. 7. 30. [12일차] Set 과 Closure 이용 * Set : 중복이 없는 유니크한 아이템을 담을 때 사용 * Closure : 이름이 없는 메소드 클로저를 이용하여 동적으로 함수를 만들어서 활용 가능 * Closure - Capturing Value (☆) : scope 밖의 범위에서도 사용이 가능하다. (Swift에서 제공하는 기능) 2020. 7. 28. 이전 1 ··· 8 9 10 11 12 13 14 다음