→ 데이터 전송을 위한 프로토콜, hpyer text transfer protocol의 약자.


→인터넷에서 리소스의 위치를 가리키는 문자열
→ URL은 기본적으로 아스키 코드 값만 사용가능하다. 즉, 한글 특수 문자와 같은 문자들은 모두 인코딩으로 변환해줘야 한다. 예를 들어 URL 파라미터에 “뉴진스”라는 단어를 쿼리 스트링으로 넘기면 Invalid url…. 과 같은 오류가 발생한다. 따라서 16진수 값으로 인코딩 후 리퀘스트를 전송한다.

대량의 데이터, 리소스를 분할해서 가져오는 방식을 말한다.
목적
유저가 소프트웨어를 사용할 때, 유저에게 꼭 필요한 정보만을 서버에 호출하는 것이 경제적이다. 따라서, 가능한 낮은 빈도로, 꼭 필요한 만큼만의 데이터를 호출하도록 할 필요가 있다.
방식
→ 따라서, 비교적 데이터 변화가 적은 구조의 사용에 적합하다. (인터넷 서점 등)
테이블 뷰의 cell이 구성되기 전의 시점에 데이터를 호출하는 메서드
→ 하지만, 구성되기 전의 시점이라는 것을 명확하게 지정할 수 없다
→ 따라서, 화면에 보이지 않는 데이터도 유저의 행위와 무관하게 호출될 수 있기 때문에 권장되는 방식은 아니다.
TableView CellForRowA 메서드가 호출되기 전에 미리 필요한 데이터를 호출하는 메서드(Prefetching)
→ iOS 10부터 등장, prefetchDataSource 프로토콜을 채택 후 prefetchRowAt 메서드 선언
→ CellForRowAt 메서드가 실행되기 직전에 미리 데이터를 로딩
→ CellForRowAt 메서드가 실행되면 미리 로딩한 데이터를 cell에 뿌려줄 수 있다.
→ 만약 빠른 스크롤 등으로(예를 들어 유저가 단순히 하단에 있는 데이터를 찾기 위해 스크롤하는 상황) 데이터를 보여줄 필요가 없을 경우, cancelPrefetchingForRowsAt메서드에 관련 작업을 수행할 수 있다.
→ 이때, 데이터를 보여줄 필요가 없다는 판단은 시스템에서 한다. 개발자는 해당 상황에서 실행할 로직만 처리해주면 된다.
→ 일급 객체first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 말한다.
→ 여기서 ‘일급’이라는 단어의 의미는 ‘특권’과 같은 것을 의미하는 것이 아니라, 일반적으로 객체가 지원하는 연산을 모두 지원한다는 의미로 ‘범용성’에 초점이 있는 단어이다.
→ 프로그래밍적인 관점에 초기의 프로그래밍 언어에서는 함수는 일급 객체가 아니였다. 즉, 매개변수 타입, 리턴값, 바인딩과 같은 기본적인 연산에 함수라는 객체를 활용하는 것은 불가능하다는 말이다.
→ 그래서, ‘함수를 일급 객체처럼 활용할 수 있도록 하냐’에 대한 관점에서, 일급 객체 == 함수로 여기고 조건이나 부가 설명을 한다. (엄격하게 일급 객체와 함수가 동일한 것은 절대 아니다. )
→ 여기서 4번의 경우, 스위프트에서는 지원하지 않는 기능이라 언급하지 않는다.
func checkBank(bank:String) -> Bool {
let bankAry = ["우리","신한","하나"]
return bankAry.contains(bank)
}
let function = checkBank
//checkBank와 동일하다. 리턴값으로 bool값 날릴 것임.
function(bank:String)
→ 함수 자체적으로 가질 수 있는 기본 타입은 4가지이다.
//1. 매개변수X, 반환값O
func myName() {
}
//2. 매개변수O, 반환값X
func myName(name:String) {
}
//3. 매개변수X, 반환값O
func myName() -> String {
}
//4. 매개변수O, 반환값O
func myName(name:String) -> String {
}
→ 함수 자체를 매개변수로 받거나 리턴값으로 활용할 수 있다.
func plus(_ a: Int, _ b: Int) -> Int {
return a + b
}
func minus(_ a: Int, _ b: Int) -> Int {
return a - b
}
func caculate(operand:(Int, Int) -> Int, a:Int, b:Int) -> Int {
return operand(a.b)
}
let sum = caculate(operand:plus, a:4, b:3)
// 7
let minus = caculate(operand:minus, a:4, b:3)
//1


잘봤습니다 :)