분류 전체보기 84

[Swift] 제네릭 문법

제네릭 제네릭은 스위프트의 어떤 타입에도 유연하게 대응할 수 있으며 코드의 중복을 줄이는 기능이다. 또한, 제네릭으로 구현한 기능과 타입은 재사용에도 쉬우며 Array, Dictionary, Set 등의 타입은 모두 제네릭 컬렉션이다. import Foundation func swapTwoInt(_ a: inout Int, _ b: inout Int) { let tmp: Int = a a = b b = tmp } var intOne: Int = 10 var intTwo: Int = 50 print("intOne : \(intOne) | intTwo : \(intTwo)") swapTwoInt(&intOne, &intTwo) print("intOne : \(intOne) | intTwo : \(intTwo..

iOS/Swift Grammar 2024.02.15

[백준] 7576, 토마토 (Swift)

- 일반적인 bfs 사용 시 시간초과 발생 - Queue에 pop 하여 원소를 빼내지 말고, 인덱스적 접근을 할 것 (시간초과 확보 가능) - 입력으로부터 graph 만드는 능력이 아직 부족함 // 24년 겨울 알고리즘 스터디 // BOJ & 프로그래머스 // // Created by 박효준 on 1/10/24. // bfs 탐색 import Foundation let MN = readLine()!.split(separator: " ").map{Int(String($0))!} let M = MN[0], N = MN[1] var graph: [[Int]] = [] let mx = [0,0,-1,1], my = [-1,1,0,0] for _ in 0..= 0 && ny < M { if graph[nx][ny..

[Swift] 클로저(Closure) 간소화 표현, 값 획득, 탈출 클로저

클로저 표현 간소화 문맥을 이용한 타입 유추 let reversed: [String] = names.sorted { (s1, s2) in return s1 > s2 } 클로저는 메소드가 요구하는 형태로 전달해야 함 매개변수 타입과 개수, 반환 타입 등이 같아야 전달인자로 전달되므로 클로저는 이미 적합한 타입을 준수한다고 유추할 수 있기에 생략해도 됨 단축 인자 이름 let reversed: [String] = names.sorted { return $0 > $1 } 간결한 표현을 통해 매개변수 이름 생략가능 in 키워드도 안 적어도 됨 암시적 반환 표현 let reversed: [String] = names.sorted { $0 > $1 } 클로저가 반환 값을 갖는 클로저이고, 클로저 내부의 실행문이 단..

iOS/Swift Grammar 2024.02.06

[Swift] 클로저(Closure) 기본 클로저와 후행(트레일링) 클로저

💡 우리가 여태껏 말해온 모든 함수는 ‘클로저’이다. 클로저 형태 이름이 있으면서 어떤 값도 획득하지 않는 전역함수 형태 이름이 있으면서 다른 함수 내부의 값을 획득할 수 있는 중첩된 함수의 형태 이름이 없고 주변 문맥에 따라 값을 획득할 수 있는 축약 문법으로 작성한 형태 공식문서 발췌 1. Global functions are closures that have a name and don’t capture any values. 2. Nested functions are closures that have a name and can capture values from their enclosing function. 3. Closure expressions are unnamed closures written ..

iOS/Swift Grammar 2024.02.06

[UIKit] Interface Builder Outlet 연결 Strong || Weak

View는 스토리보드 코드간의 연결을 위해 @IBOutlet을 통해 해결한다. 스토리보드에서 Ctrl + 좌클릭으로 UI 객체를 코드에 끌어놓으면 다음과 같이 자동으로 생성해준다. 위 사진에서 알 수 있는 점 1. Outlet 연결됨 2. 변수 명을 입력할 수 있음 3. Storage를 'Strong'과 'Weak' 중에 고를 수 있고, Default는 Weak임' 4. UI 객체는 내가 Ctrl + 좌클릭으로 가져온 Type으로 자동 선정됨 변수 명을 입력하면 알아서 '@IBOutlet weak var myLabel : UILabel!'로 선언된다. 3번에서 말한 Strong과 Weak는 강한 참조, 약한 참조로 ARC와 관련이 있다. 클래스의 인스턴스는 힙 영역에 저장되고, 이는 ARC에 의해 참조 ..

iOS/UIKit 2024.01.24

[UIKit] 마주한 첫 번째 에러 (this class is not key value coding-compliant for the key)

"this class is not key value coding-compliant for the key" ... "libc++abi: terminating due to uncaught exception of type NSException" TextField, Label, Button 컴포넌트밖에 사용하지 않았는데, ViewController 코드 상에 문제가 없는데 컴파일하면 에러가 발생한다. 결론부터 말하자면 Swift파일의 @IBOutlet || @IBAction의 연결이 끊여졌을 때 발생하는 런타임 에러이다. 상황 1. 스토리보드 view에 Label과 TextFild, Button을 배치함 'view.backgroundColor = .purple'은 시뮬레이션에 잘 연동됐는지 디버깅 용 2. 스토..

iOS/UIKit 2024.01.18

[자격증] 리눅스마스터 2급 후기 + 학점은행제 신청

리눅스마스터 2급 시험은 2023년 12월 9일 토요일이다. 해커톤 + 기말 + 리눅스마스터 2급 시험 이 모든 걸 12월 초에 몰아서 하느라 바쁘게 살긴 했다. 리눅스마스터 2급 자격증 시험을 치겠다고 다짐한 건 3가지 이유 1. 리눅스 과목이 재밌어서, 나에게 도움이 많이 됐어서 더 알아보고자 2. 리눅스 수업해주시는 교수님이 좋아서 3. 학점은행제로 5학점 + 리눅스활용및프로그래밍 과목 0.5 학점 증가 위 이유들로 나는 바쁜 스케줄임에도 불구하고 리눅스마스터 2급을 치기로 했다. 나는 일정이 많아 리눅스마스터 공부를 미루고 미루다 결국 전날 목요일부터 공부하기 시작했다. 사실 목요일도 바빠서 "내일(금)은 리눅스마스터만 공부할 거야. 내 상태를 지금 미리 봐보고 사태의 심각성과 공부법을 정해두자"..

기타 2024.01.10

[Swift] class와 struct 차이

클래스, 구조체 공통점멤버변수, 멤버함수를 갖고 있음. 을 통해 내부 요소 접근가능생성자를 사용해 초기화프로토콜을 채택할 수 있음클래스의 특징참조 타입모든 클래스의 인스턴스는 힙 영역의 내용을 공유함상속 가능ARC로 메모리 관리구조체의 특징값 타입모든 구조체의 인스턴스는 독립적임 복사될 때마다 새 인스턴스가 생성됨구조체의 인스턴스는 불변기본적으로 멤버함수를 통해 멤버변수 값 변경이 불가능 하나, mutating이라는 키워드를 멤버함수에 붙여줌으로써 변경 권한을 준다.mutating을 사용하는 예시struct Test1{ var name : String = "" func ChangeName(){ name = "박효준" }}struct Test2{ var name :..

iOS/Swift Grammar 2024.01.09

[기술스택 설명] 메타버스 수도 경북 해커톤, 유니티-리액트&iOS-스프링

본 게시물은 메타버스 수도 경북 해커톤에 참가하여 어떤 기술스택을 사용하여 프로젝트에 녹아냈는 지에 대해 기술해보겠다. 전체적 흐름도 확장형 하이브리드 메타버스 플랫폼으로써 메타버스 요소를 유니티로 구현한 다음 해당 내용을 웹, 앱과 같이 접근성이 뛰어난 다양한 플랫폼에서 유니티를 동작하게 하고 싶었다. 그래서 웹/앱에서 로그인을 하면 유니티 게임 속으로 진입하여 멀티플레이 및 안전 시나리오를 할 수 있다. 멀티 흐름도 웹 페이지에서는 리액트, 앱에서는 iOS라 생각하고 봐주면 이해가 쉽다. 리액트와 iOS는 연결 매개체로 유니티와 서버의 상호작용을 전달받고 전달해주는 역할이다. 서버 측에서는 stateless가 없는 웹소켓을 활용하여 데이터들을 양방향으로 멀티플레이를 구현했다. 유니티 측에서는 오브젝트..

기타/해커톤 2024.01.04