🍏(114)
-
[Swift] @escaping Closure / escape 클로저
xCode: 13.4.1 Swift: 5.5 @escaping 속성은 인자값으로 전달된 클로저를 저장해 두었다가, 나중에 다른 곳에서도 실행 할 수 있도록 허용해주는 속성. @escaping 클로저에 non-escaping parameter 'fn' 할당이라는 에러가 납니다. 디버깅 > func outFunc() -> Void{ print("outFunc") } var a: () -> Void = outFunc func callback(fn: @escaping () -> Void) { let f = fn f() a = fn a() } a()// outFunc callback { print("closure")// closure / closure } a()// closure 스위프트에서 함수의 인자값으로 전..
2022.08.31 -
[Swift] 트레일링 클로저 / Trailing Closure
- 트레일링 클로저(Trailing Closure) 후행 클로저라고도 불림. // 원본 함수 value.sort(by: { (s1, s2) in return s1 > s2 }) == value.sort() { (s1, s2) in return s1 > s2 } == value.sort { (s1, s2) in return s1 > s2 } // 인자값이 한개라면 인자값을 넣어주기 위한 괄호 부분도 생략이 가능. // 인자값이 여러개라면, 무작정 괄호를 생략해서는 안됨. == func divide(base: Int, success s: () -> Void) -> Int { defer { s() } return 100 / base } print(divide(base: 10)){print("연산 성공")} /..
2022.08.26 -
[Swift] 자동 참조 카운트 / ARC / Auto Referencing Counter
ARC에 관한 간단 설명 Swift는 Auto Reference Counting 자동 참조 카운팅을 이용해 메모리상의 변수, 상수, 객체 등을 관리한다. class Chan { var property = 1 } let Value = Chan() Swift가 메모리를 관리하는 방식 - Value가 Class를 상속받을 때 Value에서 Chan()를 저장하고 있으므로 Chan()의 Reference count가 증가 : 1 현재 상태에서 Value를 메모리에서 해제 시킨다면, Chan()가 참조되지 않고 접근될 이유가 없으니 Reference count가 감소 : 0 RC가 0인 경우 자동으로 메모리에서 해당 객체를 해제. 가비지 콜렉터와 비슷. 자동으로 메모리를 관리 하므로 메모리 누수 현상에 대한 ..
2022.08.26 -
[Swift] Swift / 언어
Swift Swift 언어가 갖는 구조적 특징 1. 빠름(LLVM compiler) -> python의 약 4배 2. 설계수준에서의 안전성 구현 -> 변수, 상수 선언후 사용 강제. 타입추론 기능으로 초기값 타입 정의 데이터 입력의 안전성 배열과 정수는 오버플로우 대비 확인, Array bounds check기능 추가 포인터에 직접 접근하는 시도를 차단, 클래스를 통해 간접적으로만 레퍼런스를 참조할 수 있도록 제한. 3. 옵셔널, 제네릭, 클로져, 튜플등과 같은 현대 프로그래밍 언어의 특성을 갖고있음. 4. 상호반응(interactive) -> 플레이그라운드 편집기 5. 완전한 플랫폼 -> 코코아 프레임워크, 코코아 터치 프레임워크의 모든 api를 스위프트로 호출 가능. 6. 통합(unified) -> ..
2022.08.16 -
[Swift] Ascii to String / String to Ascii / 아스키코드 변환 / 아스키 값 변환 / 아스키 / ASCII
// String to Ascii let ch = "C" let asciiIntValue_C = Int(UnicodeScalar(ch)!.value) let asciiIntValue_A = Int(UnicodeScalar("A").value) // 0x41, 65(d) // Ascii Int Value to String let result = String(UnicodeScalar(asciiIntValue_A)!) print(asciiIntValue_C) print(asciiIntValue_A) print(result)
2022.07.12