SWIFT/Grammar81 Swift : 기초문법 [클래스 - Class] Class swift에서는 객체라는 용어 대신에 인스턴스 라는 용어를 사용합니다. 한마디로 클래스 타입의 인스턴스를 객체라고 칭하지 않습니다. 단일 상속만 가능합니다. (인스턴스/타입) 메서드, (인스턴스/타입) 프로퍼티 (Struct와 같음) 참조타입(=reference type) (리퍼런스reference 라고 부름) iOS 프레임워크의 대부분이 클래스로 구성되어있습니다. SwiftUI에서는 대부분잉 Struct로 구성되어있습니다. class 는 프로퍼티와 메서드를 사용하여 새로운 유형을 생성할 수 있다는 점에서 구조체와 유사하지만, 중요한 차이점이 있으며 각 차이점을 하나씩 살펴보겠습니다. 클래스 정의 키워드 class class 클래스 이름 { // 프로퍼티와 메서드 } sturct 구조와 비슷하.. SWIFT/Grammar 4년 전 Swift : 기초문법 [프로퍼티 #4-1 Static] Static static 프로퍼티 및 메서드의 일반적인 용도 중 하나는 전체 앱에서 사용하는 일반적인 기능을 저장하는 것입니다. static은 struct, enum에서 선언할 때 사용하고, class은 클래스나 프로토콜에서 사용합니다. 예를 들어, 폴은 Swift를 배우는 사람들을 위한 무료 iOS 앱인 Unwrap이라는 앱을 만듭니다. 이 앱에서 App Store의 앱 URL과 같은 몇 가지 일반적인 정보를 저장하여 앱이 필요한 곳이면 어디에서나 참조할 수 있습니다. 그래서 내 데이터를 저장하는 다음과 같은 코드가 있습니다. struct Unwrap { static let appURL = "https://itunes.apple.com/app/id1440611372" } 이렇게 해야 Unwrap.app.. SWIFT/Grammar 4년 전 Swift : 기초문법 [기본 연산자] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. 목차 Swift의 연산자는 특정한 문자로 표현한 함수라고 할 수 있습니다. 연산자에 의해 연산되는 값의 수에 따라 단항, 이항, 삼항 등으로 구분하기도 하며, 연산자의 위치에 따라 전위, 중위, 호위 등으로 구분하기도 합니다. 연산자의 분류 분류 설명 예시 단항 연산자 피연산자가 한 개인 연산자 !A 이항 연산자 피연산자가 두 개인 연산자 A + B 삼항 연산자 피연산자가 세 개인 연산자 A ? B : C 전위 연산자 연산자가 피연산자 앞에 위치하는 연산자 !A 중위 연산자 연산자가 피연산자 사이에 위치하는 연산자 A + B 후위 연산자 연산자가 피연산자 뒤에 위치하는 연산자 A! TIP 띄어쓰기와 연산자 Swift에서 띄어.. SWIFT/Grammar 4년 전 swift : 기초문법 [ 프로퍼티 #1-1 지연 저장 프로퍼티(Lazy)] 본 게시물은 Hacking with swift , 군옥수수님의 게시글을 참고하여 작성되었습니다. Lazy properties Swift에서 메모리는 굉장히 예민한 주제인 것을 알 수 있습니다. 그런 예민함이 보다 메모리를 효율적으로 관리할 수 있는 방향으로 이어졌습니다. 이번에는 메모리와 관련된 문법 중 하나인lazy에 대해 알아보도록 하겠습니다. 애플 공식 문서 "A lazy stored property is a property whose initial value is not calculated until the first time it is used" "lazy변수는 처음 사용되기 전까지는 연산이 되지 않는다." 인스타그램을 예로 들어보자면, 인스타그램을 실행시키면 가장 상단에 본인의 팔로워들의 아이.. SWIFT/Grammar 4년 전 Swift : 기초문법 [Array의 프로퍼티 및 메서드] Array의 프로퍼티 및 메서드 Array 또한 Struct 이기 때문에 배열을 쿼리하고 조작하는 데 사용할 수 있는 자체 메서드와 프로퍼티가 있습니다. var toys = ["우디"] 1. Count count 프로퍼티를 사용하여 배열의 항목 수를 읽을 수 있습니다 . print(toys.count) var toys = [String]() if toys.count == 0 { print("아무것도 들어있지 않습니다.") } //아무것도 들어있지 않습니다. 2. append( ) append() 를 사용하여 새로운 항목을 추가할 수 있습니다. toys.append("버즈") 3. remove( ) 반대로 remove() 를 사용하여 항목을 제거할 수 있습니다. 배열은 0부터 카운트를 하기 때문에 1 인 .. SWIFT/Grammar 4년 전 Swift : 기초문법 [String의 프로퍼티 및 메서드] String의 프로퍼티 및 메서드 Swift를 사용해오면서 우리는 지금까지 많은 String 을 사용해왔고, Swift에서 Stirng은 Struct 라는것을 알게 되었습니다. 그리고 이 String 에는 자체 메서드 와 프로퍼티 를 가지고 있습니다. let string = "서근 개발 노트 블로그 입니다." 1. Count count 프로퍼티를 사용하여 문자열의 문자 개수를 셀 수 있습니다. print(string.count) //17 var toys = "" if toys.count == 0 { print("아무것도 들어있지 않습니다.") } //아무것도 들어있지 않습니다. 2. hasPrefix() hasPrefix() 문자열이 특정 문자로 시작하면 true를 반환하는 메서드가 있습니다. 첫 단어만.. SWIFT/Grammar 4년 전 Swift : 기초문법 [구조체 - Struct] 본 게시글은 yagom님의 Swift 프로그래밍 3판을 참고하여 작성되었습니다. STRUCT(구조체) CLASS와 다르게 상속이 불가능합니다. (인스턴스/타입) 메서드, (인스턴스/타입) 프로퍼티 (클래스와 같음) 값타입(value 라고 부름) Swift의 대부분의 큰 뼈대는 모두 STRUCT(구조체)로 구성이 되어있습니다. Int, Double, String 등 데이터 타입 Struct를 사용하는 경우 연관된 몇몇의 값들을 모아서 하나의 데이터 타입으로 표현하고 싶을 때, 다른 객체 또는 함수 등으로 전달될 때 참조가 아닌 복사를 원할 때, 자신을 상속할 필요가 없거나 자신이 다른 타입을 상속받을 필요가 없을 때, Apple 프레임워크에서 프로그래밍을 할 때에는 주로 클래스를 많이 사용한다. 키워드 s.. SWIFT/Grammar 4년 전 Swift : 기초문법 [#4 후행 클로저에 매개변수 사용 ] 매개변수를 받을 때, 클로저를 매개변수로 사용 함수에 전달하는 클로저는 자체 매개변수를 받을 수도 있습니다. 여태까지 우리는 ( ) -> Void 를 "매개변수가 없고, 아무것도 반환하지 않는다"라는 의미로 사용해왔지만, 클로저에서 허용되는 모든 매개변수 유형으로 ( ) 에 채울 수 있습니다. func travel(action: (String) -> Void) { print("나는 지금 집에 가고 있다..") action("서울") print("나는 도착했다!") } 이제 후행 클로저 구문을 사용하여 travel() 을 호출할 때 문자열을 승인하기 위해 클로저 코드가 필요합니다. travel { (place: String) in print("나는 지금 \(place)로 가고 있다.") } //나는 지금 .. SWIFT/Grammar 4년 전 Swift : 기초문법 [#3 후행 클로저 - Closure syntax] 후행 클로저 함수에 대한 마지막 매개 변수가 클로저인 경우 Swift는 후행클로저 구문이라는 특수 구문을 사용할 수 있습니다. 클로저를 매개변수로 전달하는 대신 { } 안의 함수 바로 뒤에 전달합니다. (후행 클로저 사용 시 가독성이 좋습니다) func travel(action: () -> Void) { print("나는 나갈 준비를 하고있다.") action() print("나는 도착했다!") } 마지막 매개변수가 클로저이기 때문에 다음과 같이 후행 클로저를 travel()구문을 사용하여 호출할 수 있습니다. travel() { print("나는 지금 차를 타고 이동중이다.") } 위 코드에는 실제로 다른 매개변수가 없기 때문에 ( ) 를 완전히 제거할 수 도 있습니다. travel { print("나.. SWIFT/Grammar 4년 전 Swift : 기초문법 [#2 클로저를 함수로 전달] 클로저를 함수로 전달 클로저는 String 과 Int 처럼 사용할 수 있으므로 이것을 함수에 전달할 수 있습니다. 이건 처음배우는 분들에겐 정말 복잡하고 어렵기 때문에 단계별로 진행하도록 하겠습니다. 먼저 기본 diriving() 클로저를 만들겠습니다. let driving = { print("나는 지금 차를 타고 이동중이다.") } 위 클로저를 함수에 전달하여 함수 내에서 실행 할 수 있도록 하려면 매개변수 유형을 () -> void 즉, 매개변수를 작성하지 않고 아무것도 반환하지 않아야 합니다. 따라서 아래와 같이 작성할 수 있습니다. 함수에 반환하는 곳을 잘 확인해주세요. func travel(action: () -> Void) { print("나는 나갈 준비를 하고있다.") action() pri.. SWIFT/Grammar 4년 전 Swift : 기초문법 [#1 클로저 기본 - Closure] 클로저는 조금 복잡하기 때문에 조금씩 단계 별로 알아보도록 하겠습니다. 기본 클로저 - Creating basic closures 클로저는 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 말합니다. 함수를 만들어 변수에 할당하고, 해당 변수를 사용하여 해당 함수를 호출하고, 해당 함수를 다른 함수에 매개 변수로 전달할 수도 있습니다. 이러한 방식으로 사용되는 함수를 클로저라고 하며 함수처럼 작동하지만 약간 다르게 작성됩니다. 메시지를 인쇄하는 간단한 예제로 시작해 보겠습니다. let driving = { print("나는 지금 운전을 하고 있다.") } 자 이렇게 이름없이 함수를 생성했고, driving 에 함수가 할당되었습니다. 이제 driving() 사용하여 호출 할 수 있습니다. 클로저는 무.. SWIFT/Grammar 4년 전 Swift : 기초문법 [매개변수 레이블 - Parameter Label] 매개변수 레이블(Parameter labels) 함수에 대한 게시글에서 매개변수에 대해 알아봤었습니다. (함수에 대해 자세히 알고 싶다면 여기를 클릭해주세요) 간단하게 매개변수에 대해 다시 집어보자면 매개변수는 함수가 정의될 때 함수가 전달받게 되는 변수(상수) 혹은 그 이름 입니다. 함수에 전송된 값을 매개 변수 라고 합니다. 자신의 함수가 매개 변수를 받아들이도록 하려면 각 매개 변수에 이름을 지정한 다음 콜론:을 지정한 다음 Swift에 데이터 유형을 알려야 합니다. 예시를 함께 보며 알아보도록 하겠습니다. func square(number: Int) -> Int { return number * number } let result = square(number: 8) //16 파라미터의 이름이numb.. SWIFT/Grammar 4년 전 Swift : 기초문법 [중첩된 루프에서 Break] 중접된 루프에서 Break 루프 내부에 루프를 넣으면 중첩 루프(nestedloop)라고 하며, 내부 루프와 외부 루프를 동시에 중단하는 것이 드문 일이 아닙니다. 예를 들어, 다음과 같이 1부터 10까지 구구단을 작성할 수 있습니다. for i in 1...10 { for j in 1...10 { let product = i * j print ("\(i) * \(j) is \(product)") } } //1 * 1 is 1 ~ 10 * 10 is 100 도중에 종료하려면 두 가지를 수행해야 합니다. 먼저 외부 루프에 outerLoop 레이블을 지정합니다. outerLoop: for i in 1...10 { for j in 1...10 { let product = i * j print ("\(i) * .. SWIFT/Grammar 4년 전 Swift : 기초문법 [Break Loop / 항복건너뛰기(Continue)] Break break키워드를 사용하여 언제든지 루프를 종료할 수 있습니다. 이를 사용해보기 위해 While문을 사용하여 코드를 작성하겠습니다. var countDown = 10 while countDown >= 0 { print(countDown) countDown -= 1 } print("서근블로그") 위 코드에서 if문을 사용하여 조건을 만들었습니다. countDown이 0보다 크거나 같으면 카운트를 하고 -1 씩 합니다. 그리고 조건문인 카운트가 4가 되면 아래 텍스트를 출력하는 것이죠. var countDown = 10 while countDown >= 0 { print(countDown) countDown -= 1 if countDown == 4 { print("Let's go now!") } .. SWIFT/Grammar 4년 전 Swift : 기초문법 [Repeat 루프] Reapeat 루프 세 번째 루프 작성 방법은 자주 사용되지 않지만 아주 쉽습니다. Repeat루프라고 불리며, 마지막에 확인할 조건을 제외하고 While루프와 동일합니다. var number = 1 repeat { print(number) number += 1 } while number 0 print("Lift off!") var frogs = 4 repeat { for _ in 1...frogs { print("repeat문 안에 for문!") } } while false var scales = ["A", "B", "C", "D", "E"] var scaleCounter = 0 repeat { print("Play the \(scales[scaleCounter]) scale") scaleCounter.. SWIFT/Grammar 4년 전 이전 1 2 3 4 5 6 다음