콘텐츠로 건너뛰기
Home » Development » Objective-C » Page 5

Objective-C

iOS 7 : UIDynamic의 이해

iOS 7에서 UIKit 에는 UIDynamic이라는 새로운 기술이 도입되었다. 이는 뷰에 대해 강체 물리(rigid-object physics)를 적용한 애니메이션을 구현할 수 있도록 한다. 뷰가 중력의 영향으로 떨어지거나 다른 뷰에 충돌하는 효과를 표현할 수 있다. 이는 이전에는 매우 복잡한 알고리듬을 적용하여 표현할 수 있었으나, UIDynamicItem은 매우 간단히 구현할 수 있다.
더 보기 »iOS 7 : UIDynamic의 이해

[iOS/OSX] 코어애니메이션 기본 개념

코어 애니메이션의 레이어

레이어 객체는 3차원 공간에 구성된 2차원 평면으로, 코어 애니메이션의 핵심이 되는 개념이다. 뷰와 비슷하게 레이어는 2차원 면의 기하학적 좌표정보, 콘텐츠, 시각적 속성등을 관리하게 된다. 하지만 뷰와는 달리 레이어는 그 스스로의 외양에 대해서는 정의하지 않는다. 레이어는 단지 비트맵을 둘러싸고 있는 상태 정보만을 관리한다. 이 비트맵은 뷰의 그려진 결과물이거나 지정한 비트맵 파일의 내용일 수 있다. 따라서 앱에서 사용하는 메인 레이어는 일종의 데이터 모델로 취급할 수 있으며 이러한 점은 애니메이션에 영향을 주는 것이므로 기억하고 넘어가야 한다.
더 보기 »[iOS/OSX] 코어애니메이션 기본 개념

Objective-C에서 웹서버로 POST 요청

코코아 네트워킹

코코아에서 네트워크 연결을 통해 통신을 하는 기능을 추가하는 것은 사실 쉽지 않다. 그것은 여느 C/C++ 프로그램과 마찬가지로 상당히 번거로운 작업들을 수반한다. 하지만 이러한 과정들은 단지 작성해야 할 코드량이 파이썬과 같은 언어에 비해 많다는 것이지, 그 과정까지 번거롭다는 것은 아니다. 보통 HTTP 연결을 사용하는 프로그램은 다음과 같은 과정을 거쳐서 동작한다. 더 보기 »Objective-C에서 웹서버로 POST 요청

사전의 fast enumeration

NSDictionary 객체도 사전처럼 fast-enumeration을 적용할 수 있다. 이 때 순회의 대상은 각각의 키가 된다. for (NSString *key in myDictionary) { NSLog(@"%@: %@", key, [myDictionary valueForKey:key]); }

파일에서 한줄씩 읽어 들이기 – Objective-C

파이썬에서는 텍스트 파일을 가리키는 파일 객체는 파일 내용의 각 라인에 대한 이터레이터처럼 작동한다. 따라서 별다른 노력을 들이지 않고 for … in 구문을 통해서 텍스트 파일의 각 라인을 읽어서 처리하는 것이 가능하다. 이 기능의 멋진 점은 파일 객체가 느긋하게 동작하기 때문에 각 라인이 필요한 시점에 한 라인씩 읽어들인다는 것인데, 따라서 각 라인의 길이가 적절하다면 파일의 크기가 아무리 크더라도 안전하게 읽어들일 수 있다는 것이다. Objective-C에서 텍스트 파일은 보통 NSString의 stringWithContentOfFile: 메소드를 사용한다. 이 메소드의 문제는 파일을 한 번에 읽어들인 다는 점이다. 따라서… 더 보기 »파일에서 한줄씩 읽어 들이기 – Objective-C

[ObjC] 윈도 + GNUStep + Clang 사용시 몇 가지 알아 둘 점

프로퍼티의 backing storage variable을 반드시 명시적으로 선언해야 함 말 그대로, 프로퍼티를 설정할 때 이 값이 담길 인스턴스 변수를 명시적으로 선언해야 한다. 옛날 iOS 관련 책을 보면 그런 식으로 코드가 되어있는데… @interface Person : NSObject { NSString *firstName, *lastName; } @property (copy, nonatomic) NSString *firstName; @property (copy, nonatomic) NSString *lastName; @property (readonly) NSString *fullName; @end iOS4로 넘어오면서 부터인가 변수를 중괄호 안에 선언해 줄 필요가 없어졌다. 이는 Objective-C 런타임이 자동으로 변수를 선언해주기 때문인데, GNUStep의 런타임은 아직 구형이라 변수는 선언해줘야 한다. (컴파일러가 해주는… 더 보기 »[ObjC] 윈도 + GNUStep + Clang 사용시 몇 가지 알아 둘 점

[iOS 앱 만들기 007] iOS 앱의 최소 단위

지금까지 iOS앱을 구성하는 화면이 어떻게 구성되고, 또 그 화면을 구성하는 요소들이 기본적으로 어떤 특징을 가지고 있는지 알아보았다. 이번에는 iOS앱을 구성하는 화면외의 구성요소들을 살펴보도록 하자.

iOS앱의 구성요소

앱을 구성하는 요소는 다음과 같다.

  • 애플리케이션 객체 (UIApplication)
  • 윈도 객체 (UIWindow)
  • 앱 델리게이트 (커스텀 클래스, UIResponder를 서브 클래싱한다.)
  • 루트 뷰 컨트롤러 (UIViewController의 서브 클래스)

이 들 객체가 있으면 앱은 실행되고 첫 화면을 표시할 수 있게 된다.더 보기 »[iOS 앱 만들기 007] iOS 앱의 최소 단위

[iOS앱 만들기 006] 뷰 전환하기

이 포스팅과 관련하여 스토리보드에서 Segue를 사용하여 화면을 전환하는 사이에 두 뷰 컨트롤러 간의 데이터를 교환하는 방법에 대한 예시를 최근에 추가로 포스팅하였으니, 참고해주세요.  – Segue를 통한 뷰 컨트롤러 전환과 데이터 교환 방법 가장 단순한 iOS의 앱을 하나 구성한다고 하면 이 앱은 앱 델리게이트과 기본 뷰(root view)의 뷰 컨트롤러, 즉 루트 뷰 컨트롤러로 구성이 될 수 있다. 물론 클래스를 디자인하기에 따라서는 앱 델리게이트와 뷰 컨트롤러가 하나의 객체일 수도 있다. (앱 델리게이트가 UIViewController의 서브클래스이면서 애플리케이션 프로토콜을 따르면서 이 두가지 일을 모두 수행하도록 만들면… 더 보기 »[iOS앱 만들기 006] 뷰 전환하기

[iOS 앱 만들기 005] 뷰 컨트롤러의 종류

iOS앱을 만들 때, 가장 많이 작성하고 다루는 클래스 중의 하나가 뷰 컨트롤러(UIViewController)일 것이다. 그리고 거의 십중팔구 이 기본 클래스를 서브 클래싱하여 커스터마이징한 뷰 컨트롤러를 사용하게된다. 물론 이러한 커스텀 뷰 컨트롤러만 사용해서 전체 앱을 만드는 것도 가능한데, 코코아터치에는 보다 유용한 몇가지 확장된 뷰 컨트롤러들이 존재하고, 이들을 잘 활용하면 전체적으로 작성해야 하는 코드의 양을 크게 줄일 수 있다. (그리고 무엇보다 잘 구현되어 있다.)더 보기 »[iOS 앱 만들기 005] 뷰 컨트롤러의 종류

[iOS 앱 만들기 004] 뷰 컨트롤러 아웃렛과 액션

뷰 컨트롤러의 주된 역할인 뷰의 제어에 대해 알아보려면 먼저 MVC 패턴에 대해 살짝 이야기하고 넘어갈 필요가 있을 것 같다. MVC 패턴은 객체 지향 프로그래밍의 디자인 패턴이지만, 코코아터치 프레임워크 곳곳에 적용되어 있으며, iOS 앱을 만들 때에도 필연적으로 가장 많이 사용될 수 밖에 없는 패턴이다.더 보기 »[iOS 앱 만들기 004] 뷰 컨트롤러 아웃렛과 액션