Programming 99

[iOS] iOS에서 Cloud 활용 (Cloud Kit 요약 정리)

Cloud Kit CKContainer : 앱의 public/private 컨텐츠를 캡슐화한 객체이다.CKDataBase : 앱 컨테이너에 담긴 public/private 데이터들에게 접근하기 위한 통로이다.CKRecord : record의 컨텐츠를 관리하기 위한 인터페이스 Record는 key-value pair로 key는 레코드에서 field 값에 해당한다. 각 field의 값은 string, number, date뿐만 아니라 파일, 데이터 블록 그리고 다른 Record와 관계를 맺기 위해 다른 Record의 reference도 넣을 수 있다. CloudKit은 container들을 이용하여 데이터를 구성한다. 각 container별로 entitlement가 필요하고 런타임에서 CKContainer ..

[Xcode] New Features in Xcode 6

SwiftSwift는 iOS/OS X개발을 위한 새로운 객체지향 언어이다. Fast. 앱을 만들기 위한 LLVM의 향상된 코드 분석을 통한 컴파일과 최적화를 제공한다.Complete platform. Swift를 통해 모든 cocoa/cocoa touch를 사용 가능하다.Safe by design. 버그, 크래쉬, 보안 취약점 등을 사전에 예방할 수 있다.Modern 코드의 양을 줄이고 헤더파일을 제거 했으며 Modern 프로그래밍 언어의 특징을 수용했다.Interactive. Swift를 통해 즉각적인 결과물을 시험이 가능하다.Unified. C와 objective-C를 완전히 대체할 수 있는 언어이다.see The Swift Programming Language Swift 관련 포스팅[Swift] S..

Programming/Tool 2014.08.28

[Swift] Swift Study 3주차 요약 (ARC, Extension, Generics, Operators ... etc)

Deinitializer리소스를 가지고 작업을 하다가 이를 정리하기 위한 작업을 정의 하려면 Deinitialization을 이용한다. 'deinit'은 객체가 deallocation이 되기 전에 호출하기 때문에 객체의 모든 property에 접근이 가능하다. ex)deinit { // perform the deinitialization} Automatic Reference Counting (memory management)Automatic Reference Counting(이하 'ARC')는 각 객체를 가리키는 refenece의 개수를 세는 것을 의미한다. 해당 객체를 가리키는 refenece의 개수가 '0'이 되면 객체를 해제한다. ARC는 이와 같은 방식으로 Mac/iOS 내에서의 memory 관리..

[Swift] Swift Study 2주차 요약 (Closure, Collection, Property, Initialization, Observer ... etc)

Function parameters함수의 param들은 기본적으로 다 상수다. 그러므로 수정이 불가능하다. 함수 내에서 param을 수정하기 위해선 inout param으로 선언하면 되는데, 함수 선언부에서 param앞에 '&'를 표시해주면 된다. Function typefunction type을 다른 function의 param의 타입으로 사용할 수 있다. 함수의 타입이 들어가는 부분에 '(Int, Int) -> Int'와 같이 일반 함수 선언 부에서 함수명의 뒷부분을 적어주면 된다. function type을 사용해서 함수를 param으로 사용할 수 있다. ex)func addTwoInts(a: Int, b: Int) -> Int { return a + b} func printMathResult(ma..

[Swift] Swift Study 1주차 요약 (Alias, Tuple, Optional, Range operator ... etc)

Swift에 입문하기에 앞서 Swift의 전반적인 syntax에 먼저 익숙해지자. /*************************************************************************/ Type alias기존의 타입들을 대체하는 키워드를 정의할 수 있다. 팀내에서 정의된 타입을 사용할 때는 편리할 수 있으나 무분별한 type alias의 사용은 code의 readability를 저해할 것 같다. ex)typealias AudioSample = UInt16 var maxAmplitudeFound = AudioSample.min// maxAmplitudeFound is now 0’ Tuple다수의 value들을 하나의 compound value로 사용할 수 있도록 해준다. e..

[iOS] 멀티코어 개발자를 위한 애플의 선물 GCD – Grand Central Dispatch

CPU 벤더들의 클럭 경쟁에서 멀티코어 형태의 경쟁으로 패러다임이 바뀐 지금. 서버 뿐 아니라 PC 그리고 모바일 단말에 사용되는 OS는 프로그래머들에게 멀티 코어 프로세싱을 지원해 줘야하는 숙명을 가지게 되는데.. 이에 애플은 스노우 레오파드를 발표할 때 두가지 큰 기술을 개발자들에게 선물했다.하나는 GCD (Grand Central Dispatch), 나머지 하나는 OpenCL 이다. GCD는 쉽게 말해 멀티코어 프로세서를 위한 Thread 프로그래밍을 OS에서 자동 관리 / 분배 해 주는 Mac OS에 내재된 C Library이다. 이말은 즉 프로그래머에게 자신이 만든 Thread를 어떻게 멀티코어 프로세서에 분산 시킬 것인가에 대한 고민을 없애 주었다는 말이다. 이 이야기는 나중에 보다 심도 있게..

[Pattern]Mediator Pattern

단도 직입적으로 Mediator Pattern은 로직을 전부 하나의 클래스에 일임하는 것이다. 일반적으로 프로그램은 수 많은 클래스들로 이루어져 있다. 수 많은 클래스들은 서로 복잡한 로직 속에 엃혀있다. 이는 프로그램의 가독성을 떨어뜨리고 개발 및 유지/보수를 힘들게 한다. 결론적으로 결합도를 높이게 된다. 이에 대한 해결책으로 각 클래스들의 Comunication을 캡슐화하여 하나의 객체에게 일임하는 것이다. 이는 클래스 간의 결합도를 낮추고 로직을 하나의 객체에 일임함으로써 유지/보수를 편리하게 해준다. 참고 : http://en.wikipedia.org/wiki/Mediator_pattern

[Pattern]MVVM Pattern

MVVM 패턴이란 즉, Model-View-View Model을 말한다. MVC 패턴과 비슷해 보이지만 MVC와는 엄연히 다른 패턴이다. 먼저 MVC 패턴부터 다시 보자. MVC 패턴은 Model-View-Controller로 각 부분을 나누어 데이터를 저장하는 Model, 사용자와의 end-point인 View, 그리고 View의 이벤트에 반응하고 Model의 데이터를 조작하는 Controller로 나뉘는 패턴이다. 각 부위의 결합도를 낮춤으로써 구현 및 유지/보수의 편의성을 향상시킨다. 그럼 MVVM은 무엇일까? 간단히 말해 MVVM은 Controller 대신에 View Model을 사용하는 것이다. UI 플랫폼이 발달하면서 UI에 관한 데이터와 커맨드는 다양하고 복잡해지기 시작했다. Controll..

[Objective C] Notification 사용하기

객체지향 프로그래밍에서 객체간 메시지를 주고 받는 상황을 비일비재하게 발생하게 됩니다. 객체간의 연관 관계가 존재한다면 단지 객체의 메소드를 호출하는 것만으로 메시지를 전달이 가능합니다. 하지만 객체간 연관 관계가 존재하지 않는다면 메시지를 존재하기 복잡해집니다. 이를 해결하기위해 제공하는 방법 중에 한 가지를 소개하겠습니다. 바로 Notification입니다. 메시지를 송신할 객체는 NSNotificationCenter를 통하여 Notification을 송신하기 위한 객체를 받습니다. NSNotificationCenter의 [postNotificationName: object: userInfo:]를 통하여 Notification을 보내면 됩니다. 그러면 메시지를 수신할 객체는 어떻게 수신해야할까요? 수..

[Pattern]Observer Pattern

객체들 사이에 1:N의 의존관계를 정의해 두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지 받고 자동으로 갱신될 수 있게 만드는 패턴입니다. Observer를 상속받아서 ConcreteObserver를 구현합니다. 구현한 ConcreteObserver의 notify()는 객체의 상태가 변할 때 이를 반영할 알고리즘을 구현합니다. Subject에 구현해 놓은 ConcreteObserver를 registerObserver(Observer o)를 이용해 observerCollection에 등록합니다. 등록한 ConcreteObserver는 Subject의 notifyObserver()를 통하여 호출됩니다. 즉, 개발자는 각각의 Observer들을 일일이 갱신할 필요없이..