하루에 0.01%라도 성장하자
반응형

SWIFT 20

iOS 음악 재생 앱 만들기 Part#2 - Audio Method

iOS 음악 재생 앱 만들기 Part#1 에서 사용된 메소드들을 조금 더 상세하게 확인한다. AVFoundation Apple 플랫폼에서 사운드 및 영상 미디어의 처리, 제어, 등 광범위한 기능을 제공하는 프레임워크 [ 주요기능 ] 미디어 재생 및 편집 카메라를 이용한 녹화와 녹음 시스템 사운드 제어 문자의 음성화 AVAudioPlayer Class 파일, 메모리에 있는 사운드 데이터를 재생하는 기능을 제공 [ 주요기능 ] 파일 또는 메모리에 있는 사운드 재생 ( 네트워크를 이용한 재생은 불가 ) 파일 재생 시간 길이 제한 없이 재생 가능 여러개 사운드 파일 동시 재생 가능 재생 속도 제어 및 스테레오 포지셔닝 Seek 기능 제공 현재 재생 데이터 얻기 가능 사운드 반복 재생 가능 [ 주요 프로퍼티 ] ..

Develop/iOS 2019.05.14

iOS 음악 재생 앱 만들기 Part#1 - 앱 개발

edwith에서 수강하던 강좌를 마쳤다. ( Swift 기초문법 ) 우선은 Swift문법은 100% 다 익히고 응용할 수 있는 단계는 아니지만, 그래도 예제 코드나 이후 진행되는 프로그래밍 관련해서 보고 알아 볼 수 있는 정도의 수준은 되었다. 이번 강좌도 edwith에서 수강한다. iOS프로그래밍 이라는 강좌이며 오리엔테이션과 총 5개의 프로젝트를 진행 하는 것 같다. 아무래도 어플을 만드는거다 보니, 기존 기초문법 강좌보다 디테일하게 설명하는 부분은 많지 않다. ( 사용메소드 하나하나 사용법과 그 정의를 확인해가면서 하면 강좌가 진행될 수 없을 것이다 ... ) 스위프트는 아니더라도 나름 개발 경력을 가지고 있기 때문에 흐름(?)상 어떤 느낌인지 알겠더라. ( 경력에 감사! ) 그래도 내 블로그를 봐..

Develop/iOS 2019.05.14

Swift 오류 처리 ( Error )

오류 처리 스위프트에서는 주로 Error 프로토콜을 이용한다. 열거형이다. 연관 값을 통해 오류에 관한 부가 정보를 제공 오류(Error) 예시 enum ExceptionError : Error{ case invalidInput; case outOfStore; } throws 오류가 발생할 여지가 있는 함수임을 표현 class VendingMachine { let itemPrice : Int = 100; var itemCount : Int = 5; var deposited : Int = 0; func receiveMoney( money:Int) throws{ guard money > 0 else{ throw VendingMachineError.invalidInput; } self.deposited += ..

Develop/iOS 2019.05.13

Swift 익스텐션

익스텐션(Extension) 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능 타입만 알고 있다면 그 타입의 기능을 확장할 수 있다. 익스텐션이 타입에 추가할 수 있는 기능 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 타입 메서드 / 인스턴스 메서드 이니셜라이저 서브스크립트 중첩 타입 특정 프로토콜을 준수할 수 있도록 기능 추가 상속과 익스텐션의 차이 분류 상속 익스텐션 확장 수직 확장 수평 확장 사용 클래스 타입 클래스, 구조체, 프로토콜, 제네릭 등 모든 타임 재정의 가능 불가능 사용법 extension 확장할 타입 이름 { /* 기능 구현 */ } [ 사용 예 ] extension Int{ // 제너릭에 추가로 저장 파라미터와 메소드를 만들어 준다. (수평적) var ..

Develop/iOS 2019.05.13

Swift 프로토콜 (Protocol)

JAVA의 interface와 비슷한 역할인 Swift의 protocol 이다. 프로토콜 (protocol) 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항을 정의함 구조체, 클래스, 열거형은 프로토콜을 채택(Adopted)해서 특정 기능을 수행하기 위한 프로토콜의 요구사항을 실제로 구현 타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현해야 한다. 프로토콜의 정의 protocol 프로토콜명 { /* 정의부 */ } 프로토콜의 구현 프로토콜은 항상 var 키워드를 사용한다. protocol Viewer { //프로퍼티 요구 var viewer : String { get set }; var language : String { get }; //메소드 요구 f..

Develop/iOS 2019.05.10

Swift assert 와 guard

assert 디버깅 모드에서만 동작한다 배포하는 애플리케이션에서는 제외된다. 예상했던 조건의 검증을 위하여 사용된다. 사실 이부분이 맘에 든다. 여러 언어들은 검증을 위해 Log를 찍는데 이게 사실 코드를 더럽히는 주된 요인이다. assert를 이용해서 debug를 하면 보다 더 정확하고 안전한 앱이 개발 될 수 있을 것 같다. var num : Int = 1; assert(num == 1, "num != 1"); // num이 1이 맞을경우는 무시, 1이 아닐경우는 "num != 1" 출력 후 중지 assert은 디버그를 보다 쉽게 할 수 있도록 해준다. guard 잘못된 값의 전달 시 특정 실행구문을 빠르게 종료 디버깅 모드 외에 다른 조건에서도 동작된다. guard는 else와 return, bre..

Develop/iOS 2019.05.10

Swift 이니셜라이저와 디이니셜라이저 ( init and deinit )

인스턴스는 생성이 되면 언젠가 소멸된다. Swift는 init, deinit으로 생성과 소멸을 관리한다. 인스턴스 생성과 초기값. 인스턴스가 생성될 때 가지고 있는 저장 프로퍼티는 초기값을 가져야만 한다. //인스턴스가 생성될 때 저장 프로퍼티는 초기값을 가져야만 한다. class TempA { var name : String = "뚠님"; var age : Int = 10; var seconName : String = "비밀"; // var seconName : String; // 이렇게 초기값을 지정하지 않으면 에러 발생. } 그러나 초기값을 주지 않거나, 초기값을 다른 변수값으로 가져와야 하는 경우가 있는데 그때 사용하는 것이 init이다. init class TempB { var name : St..

Develop/iOS 2019.05.10

Swift 클래스의 상속

상속이라는 것은 클래스를 보다 더 강력하게 만들어준다. Swift에서는 클래스의 상속을 이렇게 사용한다! 클래스 속성 정의 역시 소스로 설명하겠다! class Person { String name : String = "이름"; //Override 불가 final func hello(){ print("Hello!"); } //Override 불가 static func typeMethod(){ print("타입메소드! - Static"); } // Override 가능! class func classMethod() { print("타입메소드! - class"); } // Override 불가 == static과 같은 의미 fianl class func classMethod2(){ print("타입메소드! -..

Develop/iOS 2019.05.10

Swift 프로퍼티 (Property)

프로퍼티의 종류 인스턴스 저장 프로퍼티 타입 저장 프로퍼티 인스턴스 연산 프로퍼티 타입 연산 프로퍼티 지연 저장 프로퍼티 프로퍼티의 정의 연산 프로퍼티는 var로만 선언할 수 있다. ( 연산인데 상수로 선언 하는게 이상하긴 함..; ) 연산 프로퍼티는 읽기전용으로는 구현할 수 있지만 쓰기전용으로는 구현할 수 없음. set블럭에서는 암시적으로 newValue를 사용할 수 있다. 코드로 공부하자! struct SampleStruct{ // 인스턴스 저장 프로퍼티 var name : String = "뚠님"; var age : Int = 10; // 인스턴스 연산 프로퍼티 var anotherAge : Int { get { // 호출했을 때 실행되는 구문. get으로 선언한다. return age - 1; }..

Develop/iOS 2019.05.09

Swift 열거형 (enum)

열거형은 대체로 다른언어에서 많이 사용되지 않지만, Swift에서는 많이 사용된다고 한다. 또한 Swift만의 특징이 있다고 한다! enum Weekday { case mon case tue case wed case thu, fri, sat, sun } var day : WeekDay = WeekDay.wed; day = .tue; // enum의 모든 요소를 구현하면 default가 필요 없다. // 하나라도 빠지면 default가 필요하다 ( 컴파일러 에러 발생 ) switch day { case .mon : print("mon"); case .tue : print("tue"); case WeekDay.fri : print("fri"); case .wed, .thu, .sat, .sun : print..

Develop/iOS 2019.05.08
반응형