분류 전체보기

💻 개발/Android

[Android] 백그라운드에서 소켓 통신으로 이벤트 수신 후 알림

구현 문제 졸업프로젝트를 진행하면서 서버에서 특정한 이벤트를 수신하면 이벤트 종류에 따라 서로 다른 2개의 알림을 띄어주는 기능을 구현해야 했다. 소켓 통신으로 이벤트를 수신하는데 Activity 이동이나 Fragment 이동에 관계 없이 서버와 연결 가능한 소켓 통신이 필요했다. 해결 방법 MVVM과 단일 Activity를 사용했기에 Activity는 MainActivity 한 개 뿐이었고 MainActivity 에서 소켓 통신을 구현하면 되는 문제였다. 하지만 앱을 사용하지 않는 상황에서도 알림을 수신해야 할 필요가 있었고 이를 위해 Service를 사용했다. 물론 MainActivity 안에 해당 기능을 구현할 수 있다. 하지만 소켓 통신이 MainActivity 자체에 종속되는 상황이 발생하기에 ..

💻 개발/iOS

[TIL] 22.06.03

iOS 에서 화면 이동을 하는 방법에는 4가지가 있다. ViewController 에서 화면 전환 ViewController 가 다른 ViewController 를 호출하여 화면 전환 NavigationViewController 를 사용하여 화면 전환 화면 전환용 객체 Segue 를 사용하여 화면 전환 1. ViewController 에서 화면 전환 ViewController 위의 View 를 다른 View 로 교체하는 방식으로 메모리 누수로 인해 사용을 지양한다. 특정한 경우에만 사용한다. 안드로이드에서는 View 의 Visibility 속성을 이용하여 변경하는 방식을 자주 사용했었는데 iOS 에서는 지양한다고 하니 좀 신기했다. 이 부분에 대해선 좀 더 찾아보고 정리해봐야겠다. 2. ViewContr..

💻 개발/iOS

[TIL] 22.05.27

공부한 것 Swift 문법 알게된 것 1. Guard Guard 키워드를 사용하면 조건에 false인 경우에는 else 구문이 실행되어 이후의 코드를 실행하지 못하게 한다. continue 와 비슷하다. import Foundation func guardTest(value : Int?) { guard let value = value else {return} print(value) } guardTest(value : 2) guardTest(value : nil) // 아무것도 출력되지 않음 조건문과 유사한 기능이라고 볼 수 있는데 Guard 는 else 를 강제한다. // 일반적인 조건문 if 조건 == true { // 참인 경우에 실행할 코드 } else { // 거짓인 경우에 실행할 코드 } // G..

💻 개발/iOS

[TIL] 22.05.26

공부한 것 Swift 문법 알게된 것 1. 클래스와 구조체의 차이 1. 공통점 값을 저장할 프로퍼티를 선언할 수 있음 함수적 기능을 하는 메소드를 선언할 수 있음 내부 값을 .를 통해 접근할 수 있음 생성자를 사용해 초기 상태를 설정할 수 있음 Extension 을 사용하여 기능을 확장할 수 있음 Protocol 을 채택하여 기능을 설정할 수 있음 2. 차이점 - 클래스 참조 타입 ARC 로 메모리를 관리 상속 가능 타입 캐스팅 을 통해 런타임에서 클래스 인스턴스의 타입을 확인할 수 있음 deinit 을 사용하여 클래스 인스턴스의 메모리 할당을 해제할 수 있음 같은 클래스 인스턴스를 여러 개의 변수에 할당한 뒤에 값을 변경시키면 모든 변수에 영향을 줌 (메모리를 복사) - 구조체 값 타입 같은 구조체를 ..

💻 개발/Android

[Android] MVVM 패턴 적용기 - 2

GitHub - k906506/MVVM: 🔨 MVVM이 뭐에요? 🔨 MVVM이 뭐에요? Contribute to k906506/MVVM development by creating an account on GitHub. github.com MVVM 두 번째 시간이다. 갑작스럽게 찾아온 이유는 졸프를 진행하다가 RecyclerView 를 Room 을 사용해서 MVVM 패턴 으로 구현했는데 정상적으로 작동하지 않아서 RecyclerView + Room + MVVM 을 정리하고 코드를 다시 보려고 한다. 우선 MVVM 을 구현하기 위해서는 위의 그림을 이해하고 넘어가는 것이 좋다. 그림에서 주의깊게 봐야할 것은 화살표의 방향 이다. 모든 화살표가 단방향으로 연결 되어있고 상위 요소는 하위 요소를 참조한다. 참조..

💻 개발/Kotlin

[코틀린 완전정복] 공변성, 반공변성, 무변성

가변성 변할 수 있다? 가변성이 뭐에요? 🙄 코틀린 에서의 가변성은 형식 매개변수가 클래스 계층에 영향을 주는 것을 말한다. 예를 들어 형식 A의 값이 필요한 모든 클래스에 형식 B의 값을 넣어도 문제가 없다면 B는 A의 하위 형식이 된다. 아래 코드를 보자. val integer : Int = 1 val number : Number = integer // Number는 상위 자료형, Int는 하위 자료형 Int형으로 선언한 integer 변수가 Number형으로 선언한 number 변수에 할당해도 아무 문제가 없는 것을 볼 수 있다. 이게 바로 가변성이다. 또 다른 예로는 Int?와 Int가 있다. Int?는 null도 포함하므로 Int?가 Int의 상위 자료형이 된다. 가변성의 3가지 유형 기본적으로..

💻 개발/Kotlin

[코틀린 완전정복] 제네릭

제네릭 제네릭 , 다른 언어를 이미 경험하고 왔다면 낯선 단어는 아니다. 뭐 대충 얘기하면 자료형 을 나중에 선언하는? 그런 느낌이다. 우선 확실하게 집고 넘어가보자. 그래서 제네릭이 뭐고 왜 쓰는거에요? 🤔 제네릭 은 클래스 내부에서 사용할 자료형을 나중에 인스턴스를 생성할 때 확정하는 방법이다. 제네릭이 나오게 된 배경은 자료형의 객체들을 다루는 메소드나 클래스에서 컴파일 시간에 자료형을 검사하여 적당한 자료형을 선택하기 위해서이다. 제네릭을 사용하면 객체의 자료형을 컴파일할 때 체크하기 때문에 객체 자료형의 안정성을 높이고 형 변환의 번거로움이 줄어든다. 제네릭의 사용 방법 제네릭은 앵글 브래킷 사이에 형식 매개변수 를 넣어 선언하고 하나 이상의 형식 매개변수를 지정할 수 있다. 형식 매개변수는 자..

💻 개발/Kotlin

[코틀린 완전정복] 여러 종류의 클래스

보통 클래스 는 속성과 동작을 가지기 때문에 프로퍼티 와 메소드 를 멤버로 가진다. 먄약 특정 동작을 가지지 않고 오로지 데이터 저장을 위해 사용한다면 일반적인 클래스에서의 구현 부분은 필요가 없을 것이다. 구현부를 작성하지 않으면 그만큼 메모리를 덜 사용하게 되고 자원의 낭비를 막을 수 있게 될 것이다. 이처럼 코틀린에서는 데이터 저장을 위한 클래스가 있는데 바로 데이터 클래스 이다. 데이터 클래스 보통 데이터 전달을 위한 객체를 DTO(Data Transfer Object) 라고 부른다. 구현 로직을 가지고 있지 않고 순수한 데이터 객체를 표현하기 때문에 속성과 속성에 접근하고자 하는 게터와 세터 를 가진다. 추가적으로 toString(), equals() 과 같은 데이터를 표현하거나 비교하는 메소드..

💻 개발/Kotlin

[코틀린 완전정복] 추상 클래스와 인터페이스

추상 클래스 추상 클래스 VS 인터페이스 추상 클래스 는 대략적인 설계의 명세와 공통의 기능을 구현한 클래스이다. 즉, 구체적이지 않은 것이다. 추상 클래스 를 상속하는 하위 클래스 는 추상 클래스의 내용을 더 구체화 해야 한다. 오잉? 그럼 추상 클래스랑 인터페이스는 같은 거 아냐? 🤔 엄밀히 말하면 다르다. 인터페이스 역시 대략적인 설계 명세를 구현하고 인터페이스 를 상속하는 하위 클래스 에서 이를 구체화하는 것은 동일하다. 하지만 인터페이스에서는 프로퍼티의 상태 정보를 저장할 수 없다. 다시 말하면 인터페이스 에서는 프로퍼티의 초기화 가 불가능하다는 것이다. interface Vehicle { val name : String val color : String val weight : Double } ..

💻 개발/iOS

[TIL] 22.04.20

공부한 것 정처기 21년 3회차 알게된 것 [1과목] 소프트웨어 설계 1. 람바우 분석 기법 - 객체 모델링 -> 동적 모델링 -> 기능 모델링 순으로 진헹 - 객체 모델링 : 정보 모델링이라고도 부르며 클래스 다이어그램을 작성 - 동적 모델링 : 상태 다이어그램을 작성 - 기능 모델링 : 자료 흐름도(Data Flow Diagram)을 작성 2. 요구사항 개발 프로세스 도출(요구사항 수집) -> 분석 -> 명세 -> 확인(요구사항 검증) 3. 애자일 개발 프로세스 - 익스트림 프로그래밍 : XP, 고객과 함꼐 2주 정도의 반복 개발, TDD - 스크럼 : 30일마다 동작 가능한 제품을 제공하는 스프린트 개발 4. UML 관계 - 일반화 : Generalization, 실선 삼각 화살표, 일반적인 것과 ..

고도고도
'분류 전체보기' 카테고리의 글 목록 (4 Page)