App/Swift
-
IOS ArchitectureApp/Swift 2017. 7. 6. 10:31
IOS 개발자로서 디자인 패턴(아키텍쳐)를 이해하는 것은 굉장히 중요하다. 개발을 하면 엄청난 양의 클래스와 그에 따른 버그를 찾지 못하게 될 상황에 마주할 수 있다. 그걸 대비하여 개발설계를 잘 세우고 어떠한 아키텍쳐를 선정하여 개발하느냐는 매우 중요한 요소이다. 좋은 아키텍쳐의 특징 * 엄격한 룰에 따라 개체들간의 책임 분리를 균형있게 해야 함 * 테스트들이 가능해야 함 * 사용하기 편해야 함 분리를 해야하는 이유?단독 개발일 때는 상관 없지만, 협업일 경우 내 머릿속의 생각만을 가지고 앱을 개발하는것은 불가능 하기 때문 아키텍쳐의 종류 * MVC * MVP * MVVM * VIPER 위에서 3개(MVC,MVP,MVVM)은 아래 3개 카테고리 중 하나는 들어가 있음 * Model - 데이터나 데이터 ..
-
WKWebView의 DelegateApp/Swift 2017. 2. 20. 11:48
WKWebView는 WKNavigationDelegate와 WKUIDelegate 두가지의 Delegate를 가지고 있습니다. WKnavigationDelegate - 페이지의 start, loadding, finish, error의 이벤트를 캐치할 수 있으며 웹페이지의 전반적인 상황을 확인할 수 있음 WKUIDelegate - Javascript 이벤트를 캐치하여 동작합니다. //WKUIDelegate123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 /* * Javasccript window open event */ func webView(_ webVie..
-
WKWebView 정의 및 로드App/Swift 2017. 2. 20. 10:41
iOS8부터 제공되는 WKWebView는 Safari와 비슷한 퍼포먼스로 구성된 WebView입니다. 형태는 기존 UIWebView랑 비슷하지만, 기능적으로 추가된 부분이 많습니다. 우선 Android처럼 Javascript와의 직접연동이 가능해졌습니다. 이 부분은 IOS에선 꼭 필요한 기능이었는데, Hybrid형태의 App을 개발하는 사람들에겐 희소식이 아닐 수 없습니다. 그 외에도 속도와 memory 활용도 더 좋아졌습니다. 차이점이라면 파라미터의 값 전달방식이 다릅니다. 쿠키형태로 값을 전달하기 위해 &기호 대신 ;으로 값을 전달합니다. 선언부 - WebKit 라이브러리를 Import시킨 후 NavigationDelegate와 WKUIDelegate를 extends123import WebKit cl..
-
서브스크립트와 오버라이딩App/Swift 2017. 2. 7. 13:34
서브스크립트란? 일종의 접근자 메소드로 함수와 동일한 문법을 사용해 파라미터와 리턴형을 각각 지정해 주어야 함 계산속성이 동일한 get블록과 set블록을 구현함12345678910111213141516171819202122class MyClass { var data = ["iPhone","iPad","iPod","Mac Pro"]; subscript(index: Int) -> String{ get { } set { } } subscript(key: String) -> Int{ for var i = 0; i
-
클래스와 구조체App/Swift 2017. 2. 6. 16:46
클래스 선언 class MyClass { } // 구조체 선언 struct MyStruct { var property: Int = 0 } var myStruct: MyStruct = MyStruct(property:0) or var myStruct: MyStruct = MyStruct() myStruct.property = 10 // 중첩형식 class MyClass { struct MyStruct { static var a = 0 } enum MyEnum { case First, Second } } let myClass = MyClass() myClass.MyStruct.a = 10 var first = myClass.MyEmum.First // 저장 속성 class Contact { var email..
-
열거형App/Swift 2017. 2. 6. 16:27
열거형 == typedef1. enum 키워드를 통해 선언enum Days {case Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday} 2. 생성자, 인스턴스 메소드와 같은 클래스가 가진 일부 기능을 구현3. 원시값을 가지지 않음4. 숫자, 문자열, 문자를 원시값으로 가질 수 있음5. 사용법 - Days.Sunday - Days.Sunday.rawValue -> 해당 열거형 문자에 해당하는 값을 리턴 - Days(rawValue: val) -> 열거형 초기화
-
함수App/Swift 2017. 2. 6. 16:01
Swift 함수 구조 func (:) -> { } // "Hello" 출력func saySomething(what: String = "Hello"){}saySomething() // 가변인자 파라미터double average(int cnt, ...) average(4, 1, 2, 3) //내포된 함수 예제func select(op: String) -> ((Int, Int) -> Int){func add(a:Int, b:Int) -> Int{return a + b}func multiply(a:Int, b:Int) -> Int{return a * b} switch op {case "+" :return addcase "*" :return multiplydefault :return nil}}var op = "+..
-
컬렉션App/Swift 2017. 2. 6. 11:43
컬렉션이란?Array와 같은 데이터를 순차적으로 저장하는 배열 자료형과NSDictionary와 같은 Key & Value로 구성된 데이터의 순서에 관계없이 저장하는 딕셔너리 자료형을 포함한 포괄적인 자료형 구조 var arr:Array = []var productNam:[String] = ["iPhone", "Android", "PC"]var emptyArr = [String]()arr = [String]()arr = [] 배열의 더하기emptyArr = productNam + arr 특정크기의 배열 초기화var msg = [String](count:5, repeatedValue:"No Msg") - > ["No Msg", "No Msg", "No Msg", "No Msg", "No Msg"]var po..