반응형

SWiFT 49

멀티 스레딩을 위한 API(Operation Queue, NSOperation Queue)

안녕하세요. KataRN입니다. 오늘은 OperationQueue에 대해 알아보겠습니다. (NSOperation, NSOperationQueue는 Object-C 클래스이고, Swift는 앞에 NS 접두사를 떼면 됩니다.) OperationQueue는 Operation들의 스케쥴링과 실행을 담당하게 됩니다. Operation이 담겨 Queue처럼 FIFO으로 동작하게 됩니다. 더 높은 우선순위의 작업이 들어오게 되면 낮은 우선순위보다 빠르게 실행되는 우선순위큐 형식입니다. 1. addDependency(_:) 다른 Operation에 Dependency를 갖습니다. 현재 operation보다 매개변수의 #Operation#이 더 먼저 완료되어야 하는경우 추가합니다. 이는 작업 큐에 들어가 있을 때 실행됩..

CGPoint, CGSize, CGRect, Bounds, Frame

안녕하세요. KataRN입니다. 화면을 코드로 구현하다보면 CGPoint, CGSize, CGRect, Bounds, Frame를 자주 보게됩니다. (사실 면접 예상질문에 Bounds, Frame가 있었는데 그밖에 헷갈릴만한 것들도 이번기회에 정리하게 되었습니다.) 차례대로 간단하게 설명해보겠습니다. 우선 CGPoint, CGSize, CGRect 입니다. - CGPoint : 2차원 평면의 (x, y)좌표입니다. iOS 뷰는 왼쪽 상단이 시작지점이며 좌표는 origin(0,0)입니다. CGPoint(x: 0, y: 0) - CGSize : 너비와 높이를 가지는 구조체입니다. 그러므로 사이즈를 갖고있습니다. CGSize(width: 너비, height: 높이) - CGRect : 사각형의 위치와 크기를 ..

inout(In-Out) 파라미터

안녕하세요 KataRN입니다. 오늘은 inout(In-Out)에 대해 알아보겠습니다. 예를들면 a와 b의 숫자를 바꾸는 함수를 만든다고 가정해볼게요. 단순하게 생각하면 a값을 저장해놓고 a를 b로 b를 a로 바꾸면 될것같습니다?(더 좋은 예를 못찾겠어서.. 다른방법으로 함수를 만들면 되겠지만 inout 설명을 위해 만든점 양해바랍니다...) 그리고 당연히 이건 안된다고 뜹니다. 이유는 파라미터는 변수가 아닌 변경이 불가능한 상수이기 때문입니다. 이처럼 변경이 불가능한데 가능하게 하려면 inout을 쓰면됩니다. 그리고 함수 사용시 파라미터를 입력할때 & 이 기호를 붙여주면 함수가 종료되어도 결과는 지속됩니다. 아래의 예제를 설명할게요. func swap(_ a: inout Int, _ b: inout In..

Xcode MARK 주석 만들기(//MARK: -)

안녕하세요. KataRN입니다. 오늘은 Xcode의 주석을 만드는 방법에 대해 알아보려고합니다. 저는 처음에 이걸 왜하나 했는데... 없으면 찾는데 시간이 너무 걸리더라구요.... 물론 코드가 너무 길어도 문제입니다만... 기본적으로 마킹을 해두는게 편하니까... 애초부터 긴걸 문제삼진 말자구요..ㅎㅎ.. 우선 단순하게 주석을 처리하는건 아시죠? //일반주석입니다. 코드 앞에 "//" 혹은 command + "/"를 하면 한줄 주석이 되는건 다들 아시죠?ㅎㅎ Xcode는 마크업? 마크라인? 명칭은 잘 모르겠네요... 다맞는거같기도하고... 아무튼 이게 특별한 기능이 있습니다. 일단 보시죠. // MARK: - 주석제목 앞에 "//"가 있으니 그냥 주석처리 되겠지~ 그러면 이게 뭐가 특별하냐 귀찮기만하지...

행렬의 곱셈

안녕하세요. KataRN입니다. 오늘은 행렬의 곱셈에 대해서 알아보겠습니다. 행렬의 곱셈의 경우 행과 열을 곱해야되는데 필요할때마다 저는 돌려서 쓰는데 효율이 별로 안좋은것 같아서 효율좋은 코드를 남기려고합니다. 이건 제가 임의로 만든 코드인데 그냥 그럭저럭인것 같아요... func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] { var answer = Array(repeating: Array(repeating: 0, count: arr2[0].count), count: arr1.count) let arr3 = convertArr(arr2) for i in 0..

스토리보드 없이 코드로 UI구현하기

안녕하세요. KataRN입니다. 요즘 참여중이 공모전에 제출할 앱이 얼추 마무리가 되어서... 오랜만에 글을 쓰게되었네요... 기능구현을 실험하다싶이 이것저것 많이 시도했더니 쓸내용도 많아서 또 미루고 미루고.... 그래도 용기내서 다시 글을 작성해봅니다... 우선 제가 해본것중에 가장 만족스러웠던 스토리보드 없이 코드로만 구현하기입니다. 스토리보드로 구현할 경우 장점이 명확했습니다. 1. 빌드가 빨라요. 2. 아카이브도 빨라요. 3. 다른사람이 보기에 의외로 가독성이 좋아요.(?????) 저는 사실 스토리보드의 장점은 가독성이라 생각했었습니다. 그런데 의외로 다른사람이 봤을때 가독성이 훨씬 좋다는 이야기를 들었습니다. 아 물론 제가 스토리보드없이 만들면서 코드 스타일이 많이 바뀐점도 있기 때문에 3번은..

약수의 개수 구하기

안녕하세요. KataRN 입니다. 오늘은 약수의 개수를 구해보겠습니다. 사실 1부터 N까지의 숫자로 나눠서 나머지가 0인 것을 구하면 됩니다. 하지만 코딩테스트를 공부하면서 느낀게 다른 방법이 있으면 알아두는게 좋은것같아서 짧게나마 기록하고자 합니다. 제곱근에 소수점이 없으면 약수의 갯수가 홀수고 있으면 짝수입니다. 예제 : 프로그래머스 약수의 개수와 덧셈 (https://programmers.co.kr/learn/courses/30/lessons/77884) import Foundation func solution(_ left:Int, _ right:Int) -> Int { var answer = 0 for number in left...right{ if floor(sqrt(Double(number))..

글자 < - > 숫자 변환 UnicodeScalar() 다루기

안녕하세요. KataRN입니다. 오랜만에 글을 올리게 되었습니다. 일도 바빠지고 개인적인 프로젝트하느라 바빠서... 다시 마음을 다잡고 조금씩이라도 글을 올려보겠습니다. 오늘은 UnicodeScalar()에 대해 알아보겠습니다. 여러분 문자들을 숫자로 변환이 가능하다는 사실을 알고계신가요? 16진, 10진 등으로 변환이 가능합니다. 코딩테스트를 할때 많이 접하셨을겁니다. 저는 코딩테스트 외에도 Objective-C를 다룰때 종종 다뤘습니다. SDK가 Objective-C였는데 16진을 이용하고있어서 많이 봤습니다. 오늘은 코딩테스트를 기준으로 설명해보겠습니다. 영어 대문자는 65~90, 소문자는 97~122로 이루어져있습니다. 바꾸는 함수는 많은데(asciiValue(), UnicodeScalar()....

Kingfisher 다루기

안녕하세요. KataRN입니다. 오늘은 Kingfisher에 대해서 알아보도록 하죠 Kingfisher 원격저장소(특정 URL 주소)에 있는 이미지를 앱 내에서 보이게 해주는 라이브러리입니다. 보통 이미지를 처리할때 비동기로 처리하다보니 복잡해지고 코드가 지저분해집니다. 쉽고 클린한 코드를 위해 사용합니다. 그 밖에도 Kingfisher는 이미지를 다운로드하여 캐시하기 때문에 이미지 비동기호출에 대해 걱정하실 필요가 없습니다. 한번 캐시된 이미지는 다음번 호출에 더 빠르게 보여지는 것도 강점입니다. 사용법 코코아팟 설치부터 할게요.(pod 'Kingfisher') 참고링크 : https://katarnios.tistory.com/23

반응형