iOS 프로그래밍
iOS Universal 프로그래밍. 모델 구별하기
iOS 유니버셜(패드, 폰)으로 구별해서 프로그래밍을 하는 경우에는 One Source로 구현하는 경우가 많습니다(굳이 UI 가 크게 다르지 않다면, 다르더라도 기능은 거의 비슷하므로) 이 때 따로 클래스를 하나 두고 모델타입을 리턴해주는 방식으로 구현하면 굉장히 편리합니다. 물론 UI .. Idom 으로 Pad등을 구별하는 방법도 있긴하지만, 맥으로의 포팅이나 이래저래 봤을 때 효율적이진 않아 보입니다. 클래스를 하나 만든 뒤 + (BOOL)isIpad { if ([self getModelType] == MODEL_IPAD) { return YES; } else { return NO; } } + (MODEL_TYPE)getModelType { if ([[[UIDevice currentDevice] mo..
XCode iOS MAC 구별하는 전처리문
타겟을 2개 이상 놓고 iOS(iPhone, iPad) 및 MAC 둘다 지원하는 원소스를 구현하기 위해서는 서로 간에 맞지 않는 프레임워크를 사용하기 떄문에 (이를테면 UIKit이나, UI 관련 된 iOS 프레임워크에 포함되어 있는 소스를 맥북 타겟으로 실행시키면 에러처리를 내버린다) 이를 위해서 전처리문을 통해 맥과 iOS를 구분하는 전처리문을 사용해보자. *(전처리문은 이전 글에 설명이 되어 있습니다.) 아래와 같은 코드를 사용하면, 컴파일하기 전 처리를 하게 되는 전처리문에서 다음 타겟이 맥인지 iOS인지를 구분해서 #ifdef __IPHONE_OS_VERSION_MAX_ALLOWED //iOS용 코드 #elif defined(__MAC_OS_X_VERSION_MAX_ALLOWED) //맥용 코드 ..
[iOS프로그래밍] Navigation Bar 에 Button 붙이기
Objective-C 관련 자료는 정말정말 네이버보다는 구글링이 짱인 듯 싶습니다. 대부분 찾는 내용들이 http://stackoverflow.com/ 에 있더군요~ 필요한 것들은 개인적으로 Evernote 에 저장해놓고 검색해서 쓰는데, 포스팅도 같이 해봅니다. (대부분 Evernote 에 Copy 본을 올리는 부분은 StackOver 의 질문과 대답 부분을 발췌해서 포스팅할 생각입니다.) I am making a simple app to display drink details, and now I am trying to add a view that allows the user to input their own drink. I already created a view to display the detai..
[iOS프로그래밍] 뷰 안에 뷰는 관리하지 않는다!
개념때문에 엄청나게 삽질을 했네요... 금일 포스팅의 주제는 "뷰 안에 있는 뷰는 관리하지 않는다!"입니다. 뷰가 호출될 때에는 viewDidLoad 와 viewWillAppear 두 가지 메서드가 호출됩니다. viewDidLoad 는 AppDelegate 에서 뷰가 생성시 (alloc) 되었을 때 호출이 가능합니다. 만약 그렇다면, 뷰 안에 뷰를 만들었을 경우. 이를테면, 부모 뷰에 UISegmentation 버튼을 구현하여서 가운데를 비워놓은 채 안에 전혀 다른 뷰(전혀 다른 클래스와 xib 파일) 을 세그먼테이션 클릭 시 옮겨간다고 구조를 짰을 경우.... 부모뷰에서 세그먼테이션 버튼을 클릭한다고 해서 그 안에 뷰에서 돌아가는 viewDidLoad 가 호출이 되느냐 안되느냐 문제가 발생합니다! 찬찬..
[iOS프로그래밍] Protocol ?
iOS 에서의 Protocol 은 어떤 의미를 가질까. 버젓이 Xcode 상에 Protocol 이라는 명칭으로 나온다. 흠... Network 상에서 Protocol 의 의미는 서로 다른 환경에서 "어떤 것"을 하기 위한 "약속"(통역)으로 의미를 하는데.... Objective-C 에서의 Protocol은 어떤 의미를 가질까... 조금 자세히 들여다보자. Objective -C 에서의 프로토콜을 간단하게 설명한 글이다 - Java 의 인터페이스 개념과 비슷하다. 자바에서는 클래스를 생성해놓고 인터페이스를 만들어서 다른 클래스에서 사용할 때 편리하게 하나의 메소드를 구현해놓고 사용이 가능하다!. - 여러 클래스에서 공통적으로 사용하는 메소드를 정의하는 수단이다. - 프로토콜에서 요구하는 메소드를 구현할 ..
[iOS프로그래밍] XCode Singleton 개념잡기
Singleton... 자주 언급되는데 막상 서적이나 Web 상에 많은 정보가 없네요... 소스야 짜면 짤수록 실력이야 느는게 당연한 것이고, 좀 더 깊게 공부하기 위해서 '디자인 패턴'과 '아키텍쳐' (개발구조)등에 대해서 쉬는날은 짬짬히 공부를 진행해야 할 것 같습니다. 금일은 Singleton, Singleton 이 뭔지에 대해서 공부를 해볼까 합니다. (국내에는 정보가 없고 외국사이트 http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html를 참조했습니다) "전역변수"란 경험이 있는 프로그래머들에게는 두려움을 불러일으키는 용어라고 하는군요. 하지만 실제 전역변수는 어플리케이션에서 필요합니다. 전역변수를 사용하는 경우는,..
[iOS프로그래밍] 객체의 생성과 해제
iOS를 접하면서 가장 크게 겪고 있는 혼란(?)이 바로 요 "객체의 생성과 해제"부분입니다. JAVA에서는 new를 통해 객체를 선언만 해준다면, 알아서 초기화를 하고 '가비지 컬렉터'를 통해 자동으로 사용하지 않는 객체를 회수합니다. 물론 Xcode 4.2 부터는 ARC(Automatic Refrence Counting)이 생겨 release메소드를 사용하지 않고도 객체의 참조횟수와 변수의 규칙에 따라 객체를 해제하지만, - 잠시 ARC에 대해 짚고 넘어가자면, ARC는 객체를 참조한 횟수 (Refrence Count)와 변수의 유효영역 규칙(Scope Rule)에 따라 객체를 해제하는 것을 의미하며, 변수를 사용하고 해제 할 때 참조횟수가 1이 감소하고 이 값이 0이하이면 객체를 알아서 해제 하는 ..
[iOS프로그래밍] NSDictionary를 파헤쳐보자
NSDictionary. 굉장히 많이 사용됩니다. NSArray 는 배열을 만들어놓고 index 값을 통해 사용을 하게 되지만, NSDictionary 는 Dictionary (사전)처럼 여러 변수를 넣어놓고 찾아서 쓸 수 있습니다. 각 변수는 "key 값"을 통해 찾게 됩니다. 사전에서 "ㄱ"을 찾아 단어를 찾듯이 말이죠. 뿐 아니라 요 NSDictionary는 안에 다른 종류의 객체도 가질 수가 있습니다. (그림출처 : http://blog.yagom.net/218) Dictionary 도 Array 와 같이 수정이 가능한 NSMutableDictionary와 NSDictionary 로 나뉩니다