본문 바로가기

전체 글

(29)
Operation just, of, from just => 하나의 요소를 방출하는 observable을 생성 할 때는 just연산자 of => 2개이상의 연산자를 방출하기 위해서 of 연산자 이 두 연산자는 항목을 그대로 방출 따라서 배열같은 경우 내부의 요소를 출력시키지 못한다. 배열의 요소를 하나씩 방출하고 싶다면 from연산자를 사용한다. range,generate range의 경우 1씩증가, 파라미터가 정수의 값으로 제한 ------------------------------------------------------------------------------------------------------------------- generate의 경우 시작값과 조건 그리고 주기를 나타낼수있습니다.이때 조건에 false..
기본 프로토콜? "본래 의미는 외교에서 의례 또는 의정서" 톰 마릴이 '컴퓨터와 컴퓨터 사이에서 메시지를 전달하는 과정'이라 정의 프로토콜의 3가지 요소 1.구문(Syntax) : 데이터의 구조나 포맷을 의미 2.의미(Semantics) : 전송되는 데이터의 각 부분이 무엇을 뜻하는지를 알 수 있게 미리 정해둔 규칙 (데이터 뿐아니라 오류제어,동기제어 흐름제어) 3.순서(Timing) : 어떤 데이터를 보낼것인지와 얼마나 빠르게 데이터를 보낼것인지 정의 프로토콜의 기능 1.주소설정 (주소가 반드시 필요) 2.순서 제어 (보내는 순서 명시하는기능) 3.데이터 대열의 단편화 밎 재조합(대용량 파일시 쪼개서 전달) 4.캡슐화 : 데이터에 제어 정보를 덧붙이는것 5.연결제어: 연결설정, 데이터 전송, 연결 해제에 대..
Subject PublishSubject publishSubject를 만들어 보겠습니다. ---------------------------------------------------------- let disposeBag = DisposeBag() let subject = PublishSubject() "subject가 시작되는 시점에 내부에 아무런 이벤트가 없는 상태입니다.(생성자 없음) 따라서 생성 직후 옵저버가 구독할 경우 아무런 이벤트가 전달 되지 않습니다. 즉 PublishSubject는 구독 이후 이벤트가 전달됩니다." subject.onNext("Hello") =>전달 x let o1 = subject.subscribe{ print(">>1",$0) } o1.disposed(by: disposeBag) -..
Obsevables Observers의 기본 개념 + Disposables , Operator next , error, completeted 이벤트에는 3가지의 이벤트가 있습니다. 1.next : Observable에서 발생한 새로운 이벤트는 next 이벤트를 통해 구독자(Observer == Subscriber)에게 전달됩니다. 이러한 과정은 RxSwift에서 "Emission"이라 하고 이때 next이벤트는 0 또는 한 개 이상의 이벤트를 전달할 수 있습니다. 2.error: 에러 발생 3.completed: 정상 =>2,3 이벤트는 Observer의 라이프사이클의 가장 마지막에 실행됩니다. 이후 모든 이벤트 종료 따라서 다른 이벤트들은 더 이상 발생되지 않습니다. 이러한 것을 "Notification"이라고 칭합니다. 예시 1. 이벤트 직접 구현 by create연산자 let sample =..
설계원칙 1.설계원칙 KISS "단계적으로 순차적으로 완성시키는것" 1.Keep It Simple and Short 1)클래스나 함수 작성시 필요한 기능만 포함 2)불필요한 변수, 기능은 넣지마라 2.소프트웨어 개발 과정 - "Agile" 개발 방법 1) 최소한의spec -> 클래스 설계 -> 코딩 -> 실행 2) 이러한 단계를 여러번 반복 하면서 점점 커진다 3) Spiral모델이라고도 한다 확인학습 1. 학생 클래스와 학생 객체의 관계는 무엇인가? => 클래스는 모양이고 객체는 내용이 들어있고 메모리에 올라가 있습니다. 2. 바텀업 VS 탑 다운 바텀업 => 학생이 해야할 입출력등 작은것서부터 만드는것 탑 다운 => 학과서부터 생각하면서 어떠한 메서드를 만들어야 하는지 생각 3. for-each는 변경되는상황..
기능개발 <Programmers> func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] { var lastday = 0 //가장 최근 배포일 var answer = [Int]() //최종 배포 갯수에대한 배열 for i in 0.. lastday{ lastday = day answer.append(1) } else { answer[answer.count - 1] += 1 } } return answer }
제네릭 기본 class GenericNull{ fun EqualityFunc(arg1:T, arg2: T){ println(arg1?.equals(arg2)) } } fun main(args:Array){ val obj = GenericNull() obj.EqualityFunc("Hello","world") val obj2 = GenericNull() obj2.EqualityFunc(null, 10) //String 과 String?는 다르다 널이 가능하려면 String? 해야한다 //특정 자료형 제한시 이렇게 해야한다 }
코루틴 안녕하세요 william입니다! 오늘은 코루틴을 알아보겠습니다! 일단 핵심 언어 살펴볼께요 코루틴 이란? 현재 상황 현재 GlobalScope로 코루틴을 생성했습니다 코루틴 내에서 delay가 3초인 함수 두개를 설정한 상태입니다 타이머에 main 쓰레드가 찍힌후 6초 후 로그에서 2개의 로그가 동시에 찍힌게 보이시나요? delay를 3초를 했는데 왜 6초의 delay가 합쳐진것일까요? networkCallAnswer가 networkCallAnswer2에 영향을 끼치는걸까요? 네 맞습니다! 일단 코루틴에서는 한개의 쓰레드를 공유 한다는것에 집중해야합니다! 따라서 코루틴(한개의 쓰레드)에서 함수호출후 3초의 딜레이를 하고 또 3초의 딜레이를 한후에야 Log를 찍으로 넘어갈수 있는것이죠! 그렇다면 함수호출 ..