반응형

RxSwift - BehaviorSubject

 

BehaviorSubject는 Subject중 하나로, 최초 구독을 당하는 시점에 이전에 방출 된 값이 없다면 BehaviorSubject의 초기값을 방출하고 이미 방출 된 값이 있다면 최근의 값을 방출하는 Subject이다.

// 3이란 초기값을 가진 BehaviorSubject를 생성
let behaviorSubject = BehaviorSubject(value: 3)
	// 처음으로 구독하는 observer는 3의 값을 방출
    behaviorSubject.subscribe { value in
        print("First subscriber gets value: \(value)")
    }
    // 10의 값을 방출
    behaviorSubject.onNext(10)
    print("BehaviorSubject has already sent 10!")
    // 두번째로 구독하는 observer는 가장 최근의 값인 10을 방출 함
    behaviorSubject.subscribe { value in
        print("Second subscriber gets value: \(value)")
    }
    // 두개의 observer가 75를 동시에 방출
    behaviorSubject.onNext(75)

 

실행 결과

First subscriber gets value: next(3)
First subscriber gets value: next(10)
BehaviorSubject has already sent 10!
Second subscriber gets value: next(10)
First subscriber gets value: next(75)
Second subscriber gets value: next(75)

 

추가적으로, 중간에 만약 Error가 방출된다면 그 후 observer에겐 계속 Error를 전달하게 된다.

반응형

'iOS > Swift' 카테고리의 다른 글

[Swfit] Swift는 무엇일까?  (1) 2023.02.24
반응형

Custom NavigationBar : 네비게이션 바 제목에 이미지 넣기

let logo = UIImageView(image: UIImage(named: "logo.jpeg"))

        logo.contentMode = .scaleAspectFit
        logo.widthAnchor.constraint(equalToConstant: 120).isActive = true
        logo.heightAnchor.constraint(equalToConstant: 50).isActive = true

        navigationItem.titleView = logo

🕶️ 코드 설명 :

1. logo라는 이름의 UIImageView를 생성(logo.jpeg라는 파일을 기준으로 UIImage를 생성해서 인자로 사용)

2. 생성 된 logo에 contentMode를 .scaleAspectFit (이미지의 외곡 없이 크기에 맞게 설정 됨)으로 설정

3. Anchor로 width 120, height 50으로 설정

4. navigationItem의 titleView에 logo를 대입

반응형
반응형

Custom NavigationBar : 네비게이션 바에 직접 만든 버튼 넣기

  let btn = UIButton()
        btn.backgroundColor = .orange
        btn.setTitle("testButton", for: .normal)
        btn.widthAnchor.constraint(equalToConstant: 120).isActive = true
        btn.heightAnchor.constraint(equalToConstant: 40).isActive = true
        
        btn.addTarget(self, action: #selector(testAction), for: .touchUpInside)
        
        navigationItem.titleView = btn

🕶️ 코드 설명 :

1. btn이란 이름의 UIButton인스턴스 생성

2. 생성 된 btn버튼에 backgroundColor로 배경색 설정

3. 이어서 setTitle메소드로 버튼의 제목을 "testButton"으로 변경

4. Anchor속성으로 크기를 설정 (width 120, height 40)

5. addTarget으로 버튼에 클릭/터치에 대한 이벤트를 부여

6. 네비게이션아이템에 titleView를 위의 버튼으로 설정

반응형
반응형

Swift는 iOS, iPadOS, macOS, tvOS, watchOS와 같은 Apple의 디바이스 위에서 동작하는 소프트웨어를 만드는데에 주로 사용되는 언어라고 할 수 있습니다.

다른 언어와의 차이점은 여러가지가 있지만, 제 생각에 가장 큰 차이점은 타입에 엄격하다는 점 같습니다.

저의 경우, JAVA를 가장 먼저 프로그래밍언어로 배우기 시작했기 때문에 이런 타입에 대해 엄격한 점은 친숙했습니다.

그리고 개인적으로 아주 매력적인 언어라고 생각합니다.

공식 홈페이지에도 언급된 것 처럼 대화하듯이 코딩을 하는 기분이 들기도 합니다.

배우기쉽다는 내용에 대해서는 동의하기 어렵지만, 어떤 언어든지 러닝커브가 존재하니 그 점을 생각해보면 나쁘지않을지도 모르겠습니다.

특히, Swift전에 사용하던 objcet-c의 경우엔 더 어렵지않을까 막연히 생각합니다.

아무튼 이런 Swift를 공부하고 공부해왔던 점을 바탕으로 이것저것 적어볼까 싶어 이 카테고리를 열었는데, 꾸준히 적도록 해야겠습니다.

https://developer.apple.com/kr/swift/

 

Swift - Apple Developer

Swift는 iOS, iPadOS, macOS, tvOS 및 watchOS를 위한 강력하고 직관적인 프로그래밍 언어입니다. Swift 코드 작성은 대화식으로 재미있고, 구문은 간결하면서도 표현력이 풍부하며, Swift에는 개발자들이 좋

developer.apple.com

 

 

반응형

'iOS > Swift' 카테고리의 다른 글

[Swift] RxSwift - BehaviorSubject  (0) 2023.03.03

+ Recent posts