본문 바로가기

오브젝티브C

Swift에 따른 Objective-C의 새로운 기능들 Objective-C의 기능 추가 1. Nullability annotations 2. Generics 안녕하세요 야곰입니다 :) Swift 2.0이 오픈소스화 되면서 관심이 많이 쏠리고 있습니다. 그러나 기존 Objective-C 프로그래머들 사이에서는 Swift에 따라 변화되는 다양한 모습들이 부담으로 다가오기도 합니다. Swift 언어 문법과 기능들에 더 잘 맞춰주기 위하여 기존의 API들이 변경되기도 하고, Objective-C의 문법적 기능들과 키워드들이 몇몇가지 추가되기도 했습니다. 그에대해 간략히 살펴보는 시간을 가져보도록 할게요. # 해당내용은 2015년 6월 말에 작성된 내용으로, 애플에 의해 추후 변동의 여지가 충분히 있음을 미리 알립니다. # Nullability Swift는 지난 포.. 더보기
Objective C 우린 왜 굳이 오브젝티브-C를 배워야 할까? # 재미있는 언어 Objective-C 여러분들께서는 오브젝티브-C를 어떻게 생각하시나요? 언어의 역사와 배경을 아는 것이 정말 무의미해 보일지 모르겠지만, 오브젝티브-C의 탄생 배경을 살펴보면 재미난 점도 많고, 사용하면서 부딪힐 의문에 대해서도 더 많이 이해하게 될 수 있습니다. 그럼 오브젝티브-C는 어떻게 태어났는지, 왜 제대로 알고 써야 할지 생각해 볼까요? # Objective-C는 어떻게 탄생하고 발전해왔을까? 오브젝티브-C는 ‘객체 지향 프로그래밍 C언어 [Object-Oriented Programming in C, OOPC]’라는 이름으로 시작된 언어입니다. 즉, C를 객체 지향 언어로 발전시킨 것으로, 1983년에 발표되었습니다. 당시 사람들은 구조적 프로그래밍 습관에 따라 프로그래밍을 .. 더보기
iOS개발하기 #51. 실전 프로젝트. 간단한 계산기와 메모장(2) 오늘의 주제 1. 계산기 기능 넣기 2. 메모장 화면 구성 바꾸기 쉰 한 번째 시간입니다.^^ 지난 번에 만들어 놓은 계산기 아직 잘 갖고 계신가요?ㅎㅎㅎ 이제 계산기 로직을 완성해 볼 차례입니다. 아............. 지금 제가 글을 쓰고 있는 이 시간은 아직 훈련소에 가기 전이지만, 전 지금 훈련소에서 뒹굴고 있겠군요 ㅋㅋㅋㅋㅋㅋㅋㅋ 뭐, 응원의 한마디...는 볼 수 없겠지만 무탈히 돌아오도록 기도해주세요 ㅋㅋㅋㅋㅋ 2일 전인데 한달이라도 막상 가려니까 싱숭생숭 하네요 ㅋㅋㅋ 아마 들어가기 전까지도 계속 블로그 포스팅 예약을 하다 갈거 같은..ㅋㅋㅋㅋㅋㅋㅋㅋ 뭐 여튼 사설은 각설하고 시작해 봅니다~~~~~~~~~~~~~ # 계산기 기능 완성하기 일단, 지난번에 구현파일에 만들어 주었던 enum을.. 더보기
iOS개발하기 #50. 실전 프로젝트. 간단한 계산기와 메모장(1) 오늘의 주제 1. 실전 프로젝트 생성 벌써 쉰 번째 시간입니다.^^ 많이도 써왔나 보네요...ㅎㅎ 벌써 오십번 째 글이라니 +_+ 이거 한 편 쓰는데 시간이 얼마나 오래걸리는지 여러분들을 모르실거예요..ㅋㅋㅋㅋㅋㅋㅋ 이제 실전 프로젝트(?) 라고 하기는 좀 그렇지만 예제 앱을 하나 만들어 볼까해요. 물론 저는 디자인을 하지 못하기 때문에 그냥 있는 그대로의 녀석들을 쓰겠지만 말예요..ㅎㅎ 간단한 계산기랑 메모장(?) 정도를 만들어 볼까해요. 단순히 감을 익히는데에는 큰 무리가 없을 것이라고 봅니다. 스토리보드를 원하는 분들이 많이 계셔서, 간단한 앱이기도 하니까 스토리보드와 ARC를 사용하여 진행하도록 하겠습니다. iOS5.1 Xcode 4.3.3 기준입니다. 오늘의 간단 결과물입니다. 미리보기 +_+ㅋ.. 더보기
iOS개발하기 #49. 예외처리. @try, @catch, @finally 오늘의 주제 1. 예외처리 마흔 아홉번째 시간입니다.^^ 싱글턴 패턴에 대해서는 조금 익히셨나요? 그 외에도 디자인 패턴이란 것은 많이 존재합니다. 싱글턴 패턴은 아주 간단한 예에 지나지 않습니다. 디자인 패턴에 관심이 생기신다구요? 그렇다면 이제 아주 기초는 벗어나고 있다~ 라고 생각하시면 되겠습니다..ㅎㅎㅎ 물론 제가 말씀드리지 않은 것들은 정말 많지만, 저의 목표는 레퍼런스들을 나열하여 언제든 가져다 쓸 수 있는 것보다는 여러분들이 직접 원리를 알고, 개발문서를 통해 스스로 뭔가를 만들어 낼 수 있는 그런 포스팅이 되길 바라기 때문에 굳이 레퍼런스들을 다 나열하진 않았습니다. 많은 도움이 되셨는지 모르겠습니다. :) 이 기초 포스팅도 이제 막바지를 향해 달려가고 있습니다. 정말 몇 개 쓴거 같지도 .. 더보기
iOS개발하기 #48. 객체 간 자료교환 Singleton (2) 오늘의 주제 1. Singleton 패턴 사용해 보기 마흔 여덟 번째 시간입니다.^^ 지난 번에 이어서 싱글턴 패턴 사용 방법에 대해 알아보도록해요 ㅎ 일단... 뭐... ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 지금 여러분들이 이 포스팅을 보고계신 시간이면 저는 논산 훈련소에 있겠네요~ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아이 좋아.............는 개뿔...... 면회 환영합니다..............는 개뿔.........ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 여튼 오늘부터는 한달동안 제가 덧글을 달아드릴 수 없게되었군요...ㅠ_ㅠ 몸 건강히 돌아오겠습니다.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 한 달 캠프 으쌰~ 자 잡소리 때려치고~ 스따뚜~~~~~~~~~~~~ # 싱글톤 객체 활용 이제 싱글톤 객체를 사용하기 위해, 헤더를 impo.. 더보기
iOS개발하기 #47. 객체 간 자료교환 Singleton (1) 오늘의 주제 1. Singleton Pattern 마흔 일곱 번째 시간입니다.^^ 지난 번에는 파일을 저장하고 로드하는 것을 해 보았습니다. 이번에는 파일에서 로드해 온 자료를 다른 객체들과 공유하여 사용하고 싶을때 사용해 볼만한 방법을 가지고 왔습니다~ 물론 Objective-C에서만 쓰이는 방법이 아니지만, iOS 개발 할 때에도 유용하게 쓰일 수 있는 방법이라 이렇게 또 소개를 해 드립니다. 싱글톤 패턴이라고 흔히 이야기들을 하는데요, 무엇인지 한 번 알아보도록 합니다~ # 싱글톤 패턴이란? 한 프로그램에서 특정한 용도의 객체 하나를 생성해서 공용으로 사용하고 싶을 때 주로 사용하는 방법입니다. 주로 환경설정, 로그인 정보, 유저 정보 등을 한 번 객체에 생성해 두고 여러 객체에서 공유해서 데이터를.. 더보기
iOS개발하기 #46. 파일 입출력. NSFileManager 오늘의 주제 1. 딕셔너리 형태의 객체를 파일로 쓰고 읽기 마흔 여섯 번째 시간입니다.^^ 지난 두 포스팅에서는 모양새를 바꿔보는 것을 해 보았어요~ 사실상 명목이었지 어쨌든 개념적인 요소가 많았지요 ㅎㅎㅎ 이번에는 파일을 읽고 써 보는 시간을 가져보도록해요 ㅎㅎ 매번 어플리케이션이 종료되면 모든것이 다 날아가 버리면 아쉽잖아요. 뭔가 저장하고 다시 가져올 수 있는 방법, 간단한 파일 쓰고 읽기를 해 보도록 합시다~ 자, 그럼 시작해 볼까요?ㅎㅎ # 파일 입출력 자, 우선 오늘도 프로젝트 하나를 만듭니다. 지난 두 프로젝트와는 달리 이 프로젝트는 3개 ~ 4개 포스팅 동안 사용하게 될 것 같네용 호호 늘 그래왔듯이 싱글 뷰 어플리케이션으로 만들어 줍니다 ㅎㅎ 이름은 YGFileManagement 첫 실행.. 더보기
iOS개발하기 #45. UINavigationBar Customize (Category) 오늘의 주제 1. 네비게이션 바 커스터마이징 마흔 다섯번째 시간입니다.^^ 지난 번에는 메소드 재정의(오버라이드)를 활용하여 UIAlertView를 커스터마이징 해 보았습니다~ 어떠셨어요?ㅎ 이쁜 이미지로 커스터마이징 하니까 좀 더 산뜻해 지셨나요?ㅎ 오늘은 네비게이션 바를 커스터마이징 해 보겠습니다~ 잘 응용하면 원하는 이미지나 이쁜 글도 넣을 수 있구요 :) 자 그럼 출발해 볼까요?ㅎ # Navigation Bar Customize 자, 일단 새로운 프로젝트를 만들어 줍니다. Single View Application이구요~ YagomCustomNaviBar라는 이름으로 만들어 주었습니다 ㅎ 그리고 우리는 커스터마이징을 할 때 이번에는 카테고리 라는 녀석을 이용할거예요~ 어쨌든 일단 New File... 더보기
iOS Version Check 오늘의 Tip 1. iOS Version Check # iOS 버전체크하기 가끔 우리는 특정 버전에서 사용할 수 없는 메소드들을 만나게 됩니다. 그럼 지원하지 않는 버전의 기기에서 그 메소드를 호출하면 펑~ 하고 어플리케이션이 죽어버리는 사태가 발생하죠. 그래서 개발문서를 잘 보고 메소드를 사용하여야 합니다. 나도 모르는사이에 펑하고 어플리케이션이 죽어버릴 수 있으니까요 ㅎㅎㅎ 자, 그럼 버전체크하기~ 주석에 달려있듯이 아래 메소드를 사용하여 내가 적어준 버전과 같은지, 그보다 아래인지 위에인지 판단 할 수 있습니다. 자주 필요하다면 아래처럼 App-Prefix.pch 내에 매크로로 정의하여 사용하여도 편리합니다~ by yagom facebook : http://fb.yagom.net twitter : .. 더보기
iOS개발하기 #43. iOS Application Life Cycle 오늘의 주제 1. iOS 어플리케이션의 생명주기 2. ViewController의 생명주기 마흔 세번째 시간입니다.^^ 요 며칠 제 개인적으로 좀 힘든일도 있고, 빡빡한 프로젝트 일정 때문에 제대로 포스팅을 하지 못했습니다. 흙흙 아직 프로젝트가 마무리 되지는 않았지만 최대한 짬을 내 보도록 하겠습니다..ㅎ 우리 이제까지 정말 쭉쭉 달려왔습니다. 이것저것 해 보면서 많은 것을 맛 봐왔죠...ㅎ 물론 이것 저것 많이 해 보는 것도, 맛을 보고 언제 어디서 어떻게 써야할지 감을 익히는 것도 중요합니다. 그러나 더더욱 중요한 것은 통괄적인 흐름이고 기초죠. 초반에 포스팅 할 때 말씀드렸듯이 아주 기초적인 사항들은 많이 스킵하고 넘어왔습니다. 이번에는 그래서 정말 기초 하나를 같이 알아보고자 합니다. 물론 초보.. 더보기
#pragma mark - 소스코드 이쁘게 관리하기 개발하다가 소스코드가 길어지고 지저분해 지다보면 어떤 메소드가 어디에 있는지 찾아가기 굉장히 불편해지고 가독성이 떨어지게 됩니다. 그래서 소스코드를 약간 이쁘게 정리해 둘 필요가 있습니다. 습관을 들여놓으면 아주 좋아요 ㅎ #pragma mark 요녀석을 사용하면 좋은데요~ 한 번 보여드릴게요~ 코드 오른쪽 상단에 보면 바로갈 수 있는 네비게이터가 있는데요 한 번 클릭해 보시면 구현되어있는 변수들과 메소드들이 쭈욱 나열될 거예요. 그런데 영역별로 마크를 남겨주면 알아서 보기 좋게 정리해 줍니다~ 이렇게 이쁘게 깔끔하게 말이죵~ㅎㅎ 정리 되어있지 않았을 때입니다. 소스코드 정말 얼마 되지도 않는 컨트롤러인데도 자신이 원하는 메소드 한 번에 찾아가기 거의 불가능 하다고 봐야겠죠^^; 요로코롬 유용한 녀석이 .. 더보기
iOS개발하기 #28. 웹뷰 (WebView) <2> - delegate 사용해 보기 오늘의 주제 1. UIWebView 2. UIWebViewDelegate 스물 여덟번째 시간입니다.^^ 지난 번에는 웹뷰를 만들고 화면에 웹페이지를 띄워 만들어 보았습니다. 자 그럼 오늘은 웹뷰와 함께 이것저것 해 보아야 겠지요?ㅎ 긴 말 없이 시작해 봅니다 ㅎㅎ p.s. 추천 한 방 어떠세요?ㅎ # UIWebView - delegate 웹뷰를 화면에까지 띄워보았으니 이제는 앞으로 가기 뒤로가기 등,... 버튼 동작들을 구현해 봅니다. 자, 일단은 지난번에 버튼들에 태그를 달아 두었던 것 기억하시죠? 그 태그를 보다 직관적으로 표현해 보기 위하여 #define과 enum을 사용하여 구현해 보았습니다. #define과 enum은 뭐냐구요? 아... 음... C에서 나오는 녀석들인데, 제가 C 카테고리에서 .. 더보기
iOS개발하기 #27. 웹뷰 (WebView) <1> 오늘의 주제 1. UIWebView 2. UIToolBar 스물 일곱번째 시간입니다.^^ 지난 번까지는 프로젝트를 계속 사용했는데, 이번에 새로 프로젝트를 하나 만들어 보겠습니다. 어찌되었든간 지난 번 까지 했던 내용들은 마음에 드셨는지 모르겠습니다...^^ 지금까지 해 본것들은 예제이고 앞으로도 예제를 통해 내용이 진행되니, 디자인이 이쁘지 않더라도, 지금 당장 뭐가 없어보여도 쭉 한번 따라해 보세요..^^ 그럼 어느순간 머릿속에 정리가 되고 느낌이 올 때가 있습니다. 그 때, 필요한 것들만 검색하고 취합해서 자신만의 프로젝트를 만들어 가시면 됩니다. 아직 그정도는 안온 것 같죠?ㅎ 그럼 오늘 또 새로운 세상을 향하여 한 걸음 내딛어 봅시다^^ 출발~! # UIWebView, UIToolBar UIWe.. 더보기
Objective C <11>. 딕셔너리, 배열 ( NSDictionary, NSArray ) 오늘의 주제 1. NSDictionary, NSMutableDictionary 2. NSArray, NSMutableArray 열 한번째 시간입니다.^^ 지난 번에는 상속이라는 또 하나의 중요한 개념에 대하여 알아보았습니다. 이번에는 Objective-C에서 가장 흔하고 많이 쓰이는 클래스 중에 자료를 보관할 수 있는 녀석들에 대해 알아보도록 하려고 합니다. 딕셔너리랑 배열인데요, 한 번 봅시다~ 어휴~ 봄감기 때문에 아주 죽겠네요+_+ # NSArray 배열이란??? C를 배운 분들이라면 배열을 아실겁니다 ㅎ 하지만 여기서 말하는 녀석은 메소드까지 가지고 있는 클래스 입니다. 단순한 자료형이 아니죠~ 뭐 약간의 사용개념을 보면 C의 Linked-List(연결 리스트)와 비슷하다고 생각하시면 되겠습니다~.. 더보기
Objective C <10>. 상속(2) - 오버라이딩 오늘의 주제 1. 오버라이딩(재정의) 열 번째 시간입니다.^^ 상속의 개념에 대해서는 조금 잡히셨나요? 아직 잘 모르시겠다면 2012/03/28 - [Objective-C] - Objective C . 상속(1) 요기서 다시 한 번! 자 그럼 오늘은 상속에 대해서 조금만 더 알아봅시다 ㅎ 스따뚜~~~~~~~~~~~~ # 오버라이딩(재정의)? 오버라이딩 : 재정의 오버라이딩이 뭘까요? 지난번에 상속에 대해서 이야기 할 때, 자식은 부모에게 물려받은 것들을 필요에 의해 부분적으로 바꿔 쓸 수 있다고 했던 것 기억하시나요? 바로 그것을 말합니다. 메소드를 부모가 물려준 그대로 사용할 수도 있지만, 자신의 목적에 맞게 재정의해서 사용할 수 있습니다. 즉, 같은 이름의 메소드를 물려받은 녀석에서 덮어씌울 수 있단.. 더보기
Objective C <9>. 상속(1) 오늘의 주제 1. 상속의 개념 아홉번째 시간입니다.^^ Objective-C는 정말 오랜만이네요..^^ 초코찌찌님의 요청으로 새로운 개념을 하나 가지고 왔습니다~ 지난 번에는 메소드에 대해 알아보았습니다~ 이번에는 클래스의 상속에 대해 알아보도록 합니다.^^ 이 포스팅은 지난 2012/01/30 - [Objective-C] - Objective C . 클래스와 객체(인스턴스)2012/02/05 - [Objective-C] - Objective C . 클래스와 객체(인스턴스)이 두개의 포스팅 지식을 필요로 합니다~ 다 알고 계신가요?ㅎ 그렇다면 고고고고고고고고~~~~~~무비무비무비~~~~~~ # 상속이란? 상속이란 무엇일까요? 저는 쉽게 한마디로 말하면, 클래스의 확장 이라고 표현하고 싶네요. 즉, 이미 .. 더보기
iOS개발하기 #18. Delegate, Data Source (1)개념잡기 오늘의 주제 1. Delegate 2. Data Source 열 여덟번째 시간입니다.^^ 지난 번에는 맵뷰를 간단히 만들어 보았습니다~ 정말 더 필요한거 없어요? 아무도 댓글도 반응도 추천도 없습니다... 저 블로그 접을까봐요...ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 이번에는 중요한 개념중에 하나인 Delegate와 Data Source에 대하여 알아보도록 하겠습니다~ 중요한 개념이므로 이해 될 때 까지~! 스따뚜~~~~~~~~~~~~ # Delegate??? Delegate. 델리게이트. 우리말로 번역하면 대리자 정도로 해석할 수 있겠네요. 말 그대로 Delegate는 누군가가 해야 할일을 대신 해주는 녀석이라고 생각하시면 됩니다. 조력자가 되겠지요. 말로만 이렇게 설명하면 잘 감이 안오시죠? 간단히 그림으로 알아봅.. 더보기
Objective C <8>. 메소드의 선언과 반환값 오늘의 주제 1. 메소드 선언하고 구현하기 2. 메소드 인자 전달하기 3. 반환값(return값)에 대해 알기 여덟번째 시간입니다.^^ 정말 오랜만의 포스팅입니다...ㅋ 오늘은 제 동생의 생일이랍니다!!! 뭐... 그렇다구요 ㅋㅋㅋㅋㅋㅋ 지난 번에는 이름짓기에 대해 조금 알아보았습니다. 처음부터 이름을 잘 짓는 습관이 필요합니다. 귀찮다고 a, b, c 이런식으로 이름 지어놓으면 같이 일하는 동료는 물론 자신 스스로도 하루만 지나도 코드를 읽을 수 없습니다...ㅋㅋ 자 그럼 잔소리 생략하고 설명 들어갑니다~ 참..! 이거 보시기 전에 지난 포스트 2012/02/05 - [Objective-C] - Objective C . 클래스와 객체(인스턴스) 를 보고오시기를 추천드립니다^^ 스따뚜~~~~~~~~~~~.. 더보기
iOS개발하기 #16. 화면전환(2) <pushViewController, popViewController, modal> 오늘의 주제 1. 네비게이션 컨트롤러를 이용한 화면전환 2. ModalViewController 사용하기 열 여섯째 시간입니다.^^ 정말 오랜만의 포스팅입니다.ㅠㅠ 일단 감격의 눙물을 좀 닦고..ㅠ 요즘 제가 서식지를 좀 옮기기도 했고 이런저런 일들이 많이 겹쳐서 이제서야 짬을내 포스팅을 하네요ㅠ_ㅠ 맥북도 재구매 하였습니다 ! 그럼 사설은 여기까지..ㅋㅋ 지난 번에는 addSubview:, removeFromSuperview, setHidden 등을 알아보았습니다. 개념이해는 잘 되셨는지요? 위에 메소드들은 개발문서를 보면 아시겠지만 view를 떼었다 붙였다 없앴다 보였다 하면서 화면을 바꿔줄 수 있는 녀석들입니다. 하지만 이번에는 view controller를 인자로 받아서 처리하는 메소드들을 다뤄봅.. 더보기