'ios'에 해당되는 글 2건

  1. 2014.12.11 IOS delegate 살펴보자.
  2. 2014.12.10 Core Location Manager Changes in iOS 8

기본적으로 C언어와 JAVA를 공부했다손 치더라도

Objective-c에서 delegate를 접하는 순간 멘붕이...ㅠ

Delegate의 쓰임새는 다양하고

실제로 IOS 뷰간의 데이터주고받기

수행해야하는 작업 위임하기 등등 다양하게 쓰이고 있는것같다.

일단 내가 쓰려고 했던것은 LocationManager에서 위치를 갱신하면 가공하여 다른 클래스에 그정보를 전달하는 식으로 사용하려고 한다.

물론 사용하려는 클래스에서 바로 LocalManager의 Delegate를 사용하여 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

}

부분만 구현 해서 사용하면 편할텐데

나란 녀석은 하는 작업을 세세하게 분리하려는 못된 습성이 있어서..

여기까지 대략각설하고 Delegate에 대해서 알아보자.


일단 Delegate는 사전적 의미로는 '위임하다' 정도로 해석하면 알맞은것 같다.

실제로 Delegate는 Protocol의 한 종류??라고 이해하면 되는데

Protocol에 대해서 자세히 설명할순 없으니까

단순히말하면 규약된 메소드를 통해서 클래스간에 통신?을 할수있는 수단(통로)라고 이해하면 좋겠다.

Protocol에 Delegate를 정의해주고

사용하려는 Delegate의 구현부를 작성해서 사용하면 끝.

내가 봐더 너무 터무니 없는 설명이라 코드로 정리하는것이 여러모로 좋겠다.

단순하게 변형하여 스크린샷을 찍어보았다.


헤더파일에

프로토콜로 선언하여 주고 

required부분에 함수의 형태를 선언해준다.

다른 클래스에서 접근가능하도록 프로터피로 델리게이트를 선언하였다.

m파일에 @implementation에서

@synthesize delegate = _delegate;를 해주었고


위에처럼 gps위치가 변경될때마다 헤더파일에 선언된 함수를 호출하도록 하였다.

물론 여기에서 구현할필요가 없다.

LocalManager클래스에서는 적절한 타이밍에 함수를 호출할뿐 실제작업은 

Delegate를 등록한 다른 클래스에서 하게된다.

자바에서 말하면 오버라이딩과 완전 다른 의미이지만 하는 짓은 비슷하다고 할수있다.

자바에서 오버라이딩은 클래스를 상속받아야가능하지만 

아름다운 Objecteve-c에서는 상속받지 않고도 이런짓이 가능하다!!

각 클래스간의 독립성이 뛰어나다고 볼수있다.


자그럼 Delegate를 받아서 사용하는 클래스를 보자


먼저 LocalManager헤더를 임폴트시켰고

인터페이스부분에 Delegate를 등록해주었다.

그리고

Delegate를 연결해주자


이제 구현부를 작성하면

캬.. 개쉽다..

여기에 정의된 함수들은 LocalManager클래스에서 호출할때마다

다른클래스에 정의된 함수를 동작시킨다.

실행된 결과는


한마디로 Protocol의 Delegate를 통해서 

다른 클래스간의 함수포인터를 같은 곳을 보게 하는것!

함수정의를 return이 있게 만들면 호출한 클래스로 작업결과가 리턴된다!!


'IOS8 개발이야기' 카테고리의 다른 글

Xcode에서 주석달기  (0) 2014.12.16
Core Location Manager Changes in iOS 8  (0) 2014.12.10
Posted by positive86
,

IOS8로 올라가면서 CoreLocationManager에 상당한 변화가 있었다고 한다.

나로서는 처음부터 개발을 IOS8로 개발환경을 꾸린 상황이기 때문에 

뭐가 바뀐지는 모르겠다.

다만, 기존의 IOS7교재의 예제와 인터넷에 있는 소스는 정상작동하지 않는다는것이다.

그래서 역시나 구글링~ 구글링~

잘 IOS8에서 어떤점이 바뀌었는지 잘 정리되었는 페이지를 찾았다.. 굿~_~

http://nevan.net/2014/09/core-location-manager-changes-in-ios-8/

위 사이트를 참조하시길


그리고 IOS8에서 동작하는 예제들도 찾아보았다.

https://github.com/ShinobiControls/iOS8-day-by-day/tree/master/34-corelocation-auth

음 위의 예제의 실행화면 


https://developer.apple.com/library/prerelease/ios/samplecode/LocateMe/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007801-Intro-DontLinkElementID_2

이것은 또 다른 예제 다양한 설정을 할수있도록 잘 꾸며져 있다.




'IOS8 개발이야기' 카테고리의 다른 글

Xcode에서 주석달기  (0) 2014.12.16
IOS delegate 살펴보자.  (0) 2014.12.11
Posted by positive86
,