본문 바로가기

Swift

(27)
[Swift] private(set) var vs computed property | Read-Only 프로퍼티는 왜 사용할까? private(set) vs computed property(연산 프로퍼티). 우선 read-only에 대해서..Read-Only property란?외부에서 임의대로 값을 변경하지 못하게 클래스나 구조체 내부 변수를 보호할 수 있습니다. Concurrent한 환경에서 concurrecy problems이 발생되지 않음으로 안정합니다. 외부에서 클래스 내부의 read-only 변수의 값은 직접 접근해서 변경할 수 없지만 읽기는 가능하다는 뜻입니다.private(set) var vs computed propertyclass Card {  // MARK: - Properties  private let _number: Number  private let _shape: Shape  private var _appe..
[백준/Swift] 모음의 개수: 1264 | PS일지 문제 간단한 문제 요약 영문 입력 받았을 때 모음 "a,e,i,o,u" 개수를 세시오!!!!!!!! 고려해야 할 사항 # 입력 받을 시 종료! 코드 while let input = readLine(), input != "#" { print( input .lowercased() .filter { "aeiou".map { String($0) }.contains(String($0)) }.count) }
[iOS] 보이지 않는, 사용되지 않는 subview를 superview로부터 제거하는 방법 | Strong reference 오늘은 또 네트워크 TCP 통신관련 프로젝트를 만들다가 신기한 경험을 했습니다... 사용하지 않는 뷰의 메모리 할당해제 관련 주제입니다. side menu는 잠깐 들어가는 것이고 메인 뷰와 사이드 뷰 둘 다 뷰로 구현했습니다. 그래서 일반적으로 sideView를 보여줘야할 경우에만 인스턴스를 할당하고 hide될 때 해제를 했습니다. sideMenu는 옵셔널로 할당했습니다. 그리고 showSideMenu라는 함수를 실행할 때마다 인스턴스 할당을 했습니다. 저 setLayout함수안에서 view.addSubview(self)를 진행합니다. hideSideMenu에서는 화면 전환 애니메이션 로직을 모두 실행한 이후에 sideMenu = nil처리를 해서 MessageListViewController 내부에 인..
[iOS] PrepareForReuse() 의 중요성 | UICollectionView 안녕하세요. 오늘은 앱 개발 하다가 다시 한번 prepareForReuse()의 중요성을 깨닫고 개념과 제가 마주한 에러를 해결한 경험을 소개하려고 합니다. (23.07.23)재사용 큐 탐구 포스트 링크 1. prepareForReuse()란? 컬랙션 뷰를 사용할 때, 새로운 cell을 보여줄 때마다 특정 데이터를 바탕으로 cell 인스턴스를 만드는 것은 메모리 사용량이 많아집니다. guard let cell = collectionView.dequeueReusableCell( withReuseIdentifier: MyCell.id, for: indexPath) as? MyCell else { return .init() } 그러기에 컬랙션 뷰를 만들 때 재사용하고 싶은 cell을 등록하고 cellForRo..
[Swift 5.5] actor, actor isolation, cross-actor reference 개념 완벽 뿌수기 | No2. Actor 안녕하세요. 저번 포스트에선 actor의 개념과 thread-safe, actor's serial executor에 대해 공부했던 개념을 정리했습니다. 이번 포스트는 actor와 isolated state, Sendable(관련 개념 정리)을 준수하며 actor를 사용하는 방법, actor isolated state, cross-actor reference, mainActor, nonisolated를 공부했던 내용을 정리하려 합니다. 지난번 actor에 대한 개념만 다시 간략하게 정리하겠습니다. 1. Actor concept Concurrent domain간 shared mutable state를 access할 때 동시성 문제가 발생할 수 있습니다. multi thread에서 mutable 값이 담긴 메..
[백준/Swift] 2475: 검증수 문제 2475번: 검증수 컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들 www.acmicpc.net 간단한 문제 요약 컴퓨터마다 6자리의 고유 번호가 있다. prefix 5자리까지 0~9의 수 중 하나로 채워진다. 마지막 6번째 자리가 검증수 인데 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지가 들어간다. 문제 풀이 readLine으로 string을 입력 받고 split함수를 활용해 " " 여백을제거하며 여백 사이에 있는 각 숫자 문자열을 Int로 변환과 동시에 제곱합니다. reduce로 더할 때 % 연산을 통해 나머..
[Swift] No2. Publihser, Subscriber. 개념 파해치기 in Combine 안녕하세요. Publihser와 Subscriber을 공부하면서 배운 개념들을 소개합니다. What is Pubilsher? 이전 파트에서 소개 했지만 다시 간력하게 설명하겠습니다. "시간의 흐름"에 따라 Publisher's Output type의 값을 하나 또는 여러 Subscriber에게 publish(전송) 전송할 수 있습니다. 주의해야 할 것은 Publisher's Output, Failure generic type 과 Subscriber's Input, Failure generic type이 일치해야만 Publisher는 Subscriber에게 값을 전달할 수 있습니다. 지금 자판기가 있습니다. 자판기에는 많은 음료수가 있습니다. 많은 사람이 자판기를 이용하기 위해 줄을 서 있습니다. 음료수를..
[iOS] JSON형식의 데이터 파싱 뿌수기!! with Alamofire #2 이전에 작성한 RESTful API 파싱 방법은 URLRequest에 헤더를 정의하고 URLSession의 dataTask(with:)를 통해 결과 응답 처리 이후 .resume()로 HTTP 요청 메시지를 전송했었습니다. Alamofire은 URLRequest와 URLSession을 더 쉽게 사용할 수 있는 오픈 라이브러리 입니다. HTTP 네트워킹을 위해 스위프트 기반으로 개발된 비동기 라이브러리이고,, 정말 편리합니다. Codable을 채택한 데이터 파싱은 코드 길이가 많이 줄어든다고 생각합니다. Alamofire(5. ver) 특징 URLRequest + URLSession 객체를 Wrapping해 AF namesapce를 사용해 간결하게 사용할 수있게되었습니다. 서버요청 간결!! 서버 응답 컨텐..