전체 글
객체지향 프로그래밍 (OOP)OOP는 데이터와 기능을 객체라는 단위로 묶어 처리하는 방식임.Swift에서 OOP는 주로 클래스, 구조체, 프로토콜을 통해 구현됨. OOP의 주요 특징은 다음과 같음.캡슐화 : 객체 내부의 데이터를 외부에서 접근하지 못하게 보호하는 개념임. Swift에서는 private, fileprivate, internal 같은 접근 제어자를 통해 캡슐화를 지원함상속 : 기존 클래스나 구조체를 기반으로 새로운 클래스나 구조체를 생성할 수 있음. Swift에서 클래스는 상속이 가능하지만, 구조체는 상속이 불가능함. 대신 Swift는 프로토콜을 통해 상속처럼 동작하는 기능을 구현할 수 있음.다형성 : 상속받은 자식 클래스나 객체가 부모 클래스의 속성이나 메서드를 재정의할 수 있음. Swif..
어플 수정중에 컬렉션뷰를 수평 스크롤 할때 밑줄을 지우는 방법을 추가했음 해당 컬랙션뷰를 선언하고나서 기능을 추가할때private let puppyCollectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() layout.scrollDirection = .horizontal layout.minimumLineSpacing = 0 layout.minimumInteritemSpacing = 0 let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) collectionV..
Fix/뭐시기 브랜치를 만들고 해당 브랜치에서 작업하고 push 혹은 pull을 하려고 하는데 안됐음. 이유가 뭔가하니 fix와 fix/어쩌고 하는 두 브랜치를 사용하려고 하면, Git에서 브랜치 이름 충돌로 인해 커밋 또는 푸시가 실패하는 오류가 생기는 것이었음 오류 메시지: could not remove directory '/Users/t2023-m0072/Documents/파일이름/파일명/.git/refsremotes/origin/fix/gitignore': parent is not directory: Not a directory (-1) 해결하는 방법으로는git remote에서 fix 브랜치를 삭제하고 fix가아닌 다른 이름 fix/bugfix 등으로 이름을 변경하면됨. 예방하는 방법으로는브랜치를..
오늘부터 다시 TIL작성을 할 것임. 요즘 코딩에 손을 놨었는데, 주문한 새 맥북도 온김에 오랜만에 코딩 공부를 해봤음. 요즘은 기초 문법부터 다시 공부를 하고있는데 개념으로 다가가니 조금 어려운 느낌이 강하게 들었음. https://leedoseo.tistory.com/192 [iOS / Swift] 구조체 (Struct)구조체 (Struct): 구조체란 인스턴스의 값(프로퍼티)을 저장하거나 기능(메서드)을 제공하고 이를 캡슐화할 수 있는 Swift가 제공하는 타입(named type)임. 클래스처럼 인스턴스를 만들어서 실제 작업leedoseo.tistory.com https://leedoseo.tistory.com/191 [iOS / Swift] 클래스(Class)Swift는 객체 지향 언어이기 떄문..
구조체 (Struct): 구조체란 인스턴스의 값(프로퍼티)을 저장하거나 기능(메서드)을 제공하고 이를 캡슐화할 수 있는 Swift가 제공하는 타입(named type)임. 클래스처럼 인스턴스를 만들어서 실제 작업에도 쓸 수 있음.코드를 보면 클래스와 구조체의 코드가 거의 비슷함. class를 struct로 바꾼 것 말고는 차이가 없는듯함.이처럼 클래스와 구조체는 선언하고 사용하는 방법까지 매우 비슷함. 구조체 안의 변수도 속성이라 부르고 함수도 메서드라고 부름.구조체 안의 변수 : 속성(Property)구조체 안의 함수 : 메서드(method) 이제 클래스와 조금 다른 점을 보자면, 클래스에서는 초기화 작업이 있었음. 초기화 작업을 하면 인스턴스에 매개변수를 변경해줄 수 있었음.(클래스 내부에 init(..
Swift는 객체 지향 언어이기 떄문에 클래스의 사용이 필수적임. 또한 클래스의 사용으로 코드는 더 유연해지고 보기쉽게 됨.클래스(Class): Swift에서는 클래스를 정의하여 객체를 만들고 사용할 수 있음. 클래스를 하나 만든다면 클래스에서 생성된 객체인 인스턴스를 만들어 실제 작업에 쓰일 수 있게함. 클래스에 대한 예시코드를 보겠음.클래스를 선언하기 위해서는 아래 처럼 작성하면 됨.class '클래스이름' { /* 코드 부분 */}위 처럼 클래스를 선언하고 안에 name 변수와 my_name() 이라는 함수를 선언했음.Swift에서는 클래스 안에 변수를 속성이라고하고 함수는 메서드라고 함. 클래스 안의 변수 : 속성 (property)클래스 안의 함수 : 메서드 (method) 이렇게 클래스를 선..
옵셔널 (Optional): 옵셔널이란 변수의 값이 있을 수도 있고 없을 수도 있다는 것을 나타냄. 즉, 변수의 값이 nil값인 아무것도 없는 상태를 가질 수 있다는 것임.이게 무슨소린지 나는 처음에 이해를 잘 못했음. 없으면 0이지 '빈 값'이라는 개념이 있다는 것을 이해하지 못했음. nil값을 가질 수 있는 옵셔널 변수를 선언하기 위해서는 데이터 타입 뒤에 ?를 붙이기만 하면 됨. 아래 예시를 보겠음.말 그대로 데이터 타입 뒤에 ?를 붙여 옵셔널 변수 선언을 했음.이름이 있을 경우에는 name을 그대로 출력하고, 이름이 nil일 경우에는 '손'을 넣어 출력하여"안녕하세요, '이름'님", 혹은 "안녕하세요, '손'님" 이 출력되게 했음. 이처럼 이름이 String값일수도 있고, nil일 수도 있음. 그..
Swift에서 함수의 형태1. 매개변수와 반환값 둘 다 있는 경우// 매개변수와 반환값 둘 다 있는 경우func 함수이름(매개변수1 이름: 매개변수1 타입, 매개변수2 이름: 매개변수2 타입 ...) -> 반환타입 { /* 함수 구현부분 */ return 반환값}Swift에서 함수의 형태는 다음과 같음. 위의 형태는 함수에 매개변수와 반환값이 있는 경우고 상황에따라 매개변수가 없을 수도 있고 반환값이 없을 수도 있음. 2. 매개변수가 없는 경우// 매개변수가 없는 경우func 함수이름() -> 반환타입 { /* 함수 구현부분 */ return 반환값}매개변수가 없는 경우엔 단순히 매개변수를 쓰는 괄호를 비워두면 됨. 3. 반환값이 없는 경우// 반환값이 없는 경우func 함수이름() -> void{..
컬렉션 타입: 데이터들을 한번에 관리할 수 있고 쉽게 사용할 수 있는 타입. 배열, 딕셔너리, 세트 등이 있음.Array(배열): 같은 데이터 타입의 값들을 순서대로 저장하는 List라고 생각하면 됨.배열에는 순서가 있는 상태로 저장이 되어 어떠한 요소에 접근하기 편함. 중복된 값을 허용함.코드를 이렇게 작성해보니 .first, .last로 접근했을 때 오류가 발생Optional(kim) 등등 Optional이라고 뜨는데 이건 다음에 다루겠음.일단 보아하니 배열에 추가를 하게되면 해당 배열에서 가장 마지막에 추가가 되는 것을 알 수 있음.딕셔너리: 순서 없이 키(key)와 값(value)를 한 쌍으로 데이터를 저장하는 컬렉션 타입이번에도 마찬가지로 옵셔널에서 오류가 발생은 했지만 다른 부분은 출력이 잘..