
HTTP 프로토콜 서버와 클라이언트는 "정해진 형태"로 "요청"과 "응답"을 주고 받는다. 클라이언트 -> 서버에게 HTTP 방식으로 요청할 때에는 여러가지 방법이 존재! GET -> 데이터를 얻고 싶을 때 요청 HEAD -> 헤더 정보를 얻고 싶을 때 요청 POST -> 내용을 전송할 때 PUT -> 내용을 갱신하고 싶을 때 DELETE -> 내용을 삭제하고 싶을 때 OPTIONS -> 가능한 메소드 옵션을 파악할 때 TRACE -> 리소스가 수신되는 경로를 파악할 때 PATCH -> 리소스를 일부 수정할 때 서버는 요청한 메서드에 맞춰서 Response를 클라이언트에게 전달한다 ! REST (Representational State Transfer) 자원을 이름으로 구분해, 자원의 정보를 주고 받는 ..
Animation 공부할 때가 왔기 때문에 ,,, Animation 1. 우선 애니메이션은 Closure 기반으로 작성한다. 2. Animate가 실행되는 동안에는 user Information (터치 등)이 일시적으로 disabled 되었다가, 끝나면 다시 enable 됩니다,, 3. 애니메이션이 가능한 속성이 정해져있다. frame, bounds, center -> 좌표, 레이아웃 관련값 transform -> 모양 관련 값 alpha, backgroundColor -> 색상 관련 값 UIView.animate(withDuration: TimeInterval, delay: TimeInterval, options: UIView.AnimationOptions, animations: () -> Void c..
TableView를 이용해서 구현해보게씸더. xib를 이용해서 테이블뷰 하나를 만들어줍니다. (원래 만들던 방식으로..!) 거기서 import UIKit class ViewController: UIViewController { @IBOutlet weak var tableView: UITableView! var dataList : [String] = ["가","나","다","라","마"] let refreshControl = UIRefreshControl() override func viewDidLoad() { super.viewDidLoad() registerXib() assignDelegate() initRefresh() } func initRefresh() { refreshControl.addTarg..

UIActivityIndicator import UIKit class ViewController: UIViewController { // lazy 를 사용하면 해당 클래스가 시작될 때 해당 변수가 초기화되지 않고, // 실제로 해당 변수가 사용될 때 초기값이 계산되는 형태 // lazy 를 사용하면 self 형태로 접근 가능 lazy var activityIndicator: UIActivityIndicatorView = { // 해당 클로저에서 나중에 indicator 를 반환해주기 위해 상수형태로 선언 let activityIndicator = UIActivityIndicatorView() activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height:..

테이블뷰를 만드는 방법은 알고 있지만, 세부적인 사항에 대해 정리를 해보겠다. 1. awakeFromNib() 객체가 초기화(인스턴스화)된 후 호출되는 메서드 간단하게, ViewController에서 사용했던 ViewDidLoad()와 비슷한 개념 awakeFromNib()가 일어나기 전에 Init(coder: )가 호출된다. -> 코드로 Cell을 짜는 경우에는 이 부분을 작성 ! Init이 끝난 이후에, awakeFromNib() 호출이 됨 스토리보드나 .xib 형태로 구현하는 경우에는 init을 따로 해주지 않더라도 자동으로 호출이 됨 ! init(coder: ) 시점에서는 --> frame이나 layer 관련 없는 것들만 ! awakeFromNib() 시점에서는 --> Frame, Layer, @..

Sopt 28기 세미나 자료가 정리가 너무 잘 돼있어서 ,,, 감사합닏 ㅏ파짱 직접 전달 방식 (동기 방식) present / push시에 프로퍼티에 접근해 넘겨주는 방식 vc.text = 넘기고 싶은 데이터 와 같은 코드만 작성한다고 데이터가 전달되는 것이 아니다. 해당 vc를 push하거나 present까지 진행되어야 데이터가 전달되는 형태이다. self.navigationController?.pushViewController(vc, animated: true) -> 이렇게 정의한 객체를 현재 navigation의 다음 화면으로 띄우겠다 ! Segue prepare 메소드를 활용해서 데이터를 넘겨주는 방식 segue는 두 뷰사이의 관계를 의미한다. 출발지인 source / 도착지인 destinatio..

시작하는 스토리보드 바꾸는 방법 SceneDelegate.swift name: 부분에 시작하고자 하는 스토리보드 이름을 넣는다 ! info.plist info.plist에서 바꾸고자 Appication Scene Manifest 메뉴를 펼치고 Storyboard Name을 변경한다 ! info.plist의 역할 프로젝트를 생성하면 자동으로 info.plist 파일이 생성되는데, 해당 파일 내에는 프로젝트에서 필수적으로 사용되는 환경 설정 정보들이 key -value 형태로 담겨 있다. 추후, 프로젝트에서 권한을 세팅하거나 프로젝트 전반적인 세팅값을 바꾸고 싶은 경우 수정 ! 만약 SceneDelegate.swift 와 info.plist 두 가지 파일에서 동시에 다른 스토리보 시작점을 정의한다면 Scen..
1. 메인 스토리보드 -> TableView 추가 2. Cocoa Touch Class -> TableViewCell 추가 (Also create Xib file 체크) 3. Xib 파일에서 Cell Custom 4. Xib -> Custom Class 에서는 이미 Class가 연결돼 있어서 따로 안 건드려도 된다. 5. @IBOutlet // @IBAction 을 연결해주고 6. identifier 연결해주기 (제일 중요 ! ) 부가 설명을 하자면, xib파일에서 cell을 클릭해주고 Identifier 지정해주면 된다.. ! 7. 다시 메인 스토리보드에 가서 생성한 TableView를 뷰컨에다가 연결 8. UITableViewDelegate, UITableViewDataSource 채택 ! 9. 대리..

클로저 { (parameters) -> return type in statements } { (매개변수 목록) -> 반환타입 in 실행 코드 } 클로저는 일급 시민으로 변수, 상수 등으로 저장, 전달 인자로 저장이 가능한 형태 ! * 일급 객체의 특징 1. 모든 일급 객체는 함수의 실질적인 매개 변수가 될 수 있다. 2. 모든 일급 객체는 함수의 반환값이 될 수 있다. 3. 모든 일급 객체는 할당의 대사이 될 수 있다. 4. 모든 일급 객체는 비교 연산 (==, equal)을 적용할 수 있다. 우리가 사용했던 함수들은 모두 "이름 있는 클로저" 형태라고 생각하면 된다. 함수로 작성했던 것들 모두 (이름없는 함수인) 클로저로 표현이 가능 // 함수 (이름있는 클로저) 사용 func sumFunction(a..

구조체와 클래스의 공통점 프로퍼티와 메서드를 사용해서 구조화된 데이터와 기능을 가진다. 새로운 사용자 지정 타입을 만들어 준다. 초기화 Init을 정의해서 초기 상태를 설정 할 수 있다. 확장(extension)이 가능하다. 프로퍼티값에 접근할 때 점(.)을 사용한다. 프로토콜 사용이 가능하다 다음 조건 중 1개 이상을 만족하면 구조체의 주 목적이 관계된 간단한 값을 캡슐화 하기 원할 때 구조체의 인스터스가 참조되기 보다 복사되기를 원할 때 구조체가 프로퍼티나 메소드 등을 상속 할 필요가 없는 경우 구조체를 사용 ! ! // struct struct ValueType { var property = 1 } // class class ReferenceType { var property = 1 } let fi..