본문 바로가기
프로그래밍/iOS

맵뷰(MapView) 2장 - Frameworks추가

by 백룡화검 2012. 2. 9.

이제 프레임워크를 추가합니다.


 

추가할 프레임 워크는 CoreLocation과 MapKit 입니다.

코어로케이션은 현재의 위치를 계속 추적하고, 맵킷은 지도를 화면에 띄우는 역활을 합니다.


 

 
 추가한후에 ViewController.h으로 갑니다.


 

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>

@interface testLocationViewController : UIViewController <CLLocationManagerDelegate> {
   
    CLLocationManager *locationManager;
    CLLocation *startPoint;
   
    MKMapView *myMapView;
}
@property (nonatomic, retain) CLLocationManager *locationManager;
@property (nonatomic, retain) CLLocation *startPoint;

@end


=======================================================================================

#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>

아까 추가한 프레임워크를 참조하겠다고 선언했습니다.


@interface testLocationViewController : UIViewController <CLLocationManagerDelegate> {

이제부터 testLocationViewController은 CLLocationManagetDelegate를 따른다고 선언했습니다.

델리게이트에 대해서는 좀 더 나중에 보기로 하죠.


CLLocationManager *locationManager;
CLLocation *startPoint;
MKMapView *myMapView;


testLocationViewController는 CLLocationManager 클래스의 인스턴스를 가리키는 locationManager라는 인스턴스 변수를 가집니다.

마찬가지로 CLLocation 클래스의 인스턴스를 가리키는 startPoint, MKMapView 클래스의 인스턴스를 가리키는 myMapView 인스턴스 변수를 가지게 됩니다.


@property (nonatomic, retain) CLLocationManager *locationManager;
@property (nonatomic, retain) CLLocation *startPoint;

그리고 맵뷰를 제외한 나머지 두 변수를 프로퍼티로 쏴줬습니다.

애플에서 전역변수를 사용할시에는 이렇게 @property 로 쏴주고 밑에서 보시면 아시겠지만, @synthesize로 .m에서 받아주고 역시 .m내의

- (void)viewDidUnload과 - (void)dealloc에서 해제를 하라고 권장하고 있습니다. 프로퍼티도 나중에 한번 다루겠습니다.


.m 으로 넘어가죠


 

#import "testLocationViewController.h"

@implementation testLocationViewController
@synthesize locationManager, startPoint;


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}



- (void)viewDidUnload {
    [super viewDidUnload];
    self.locationManager = nil;
    self.startPoint = nil;
}


- (void)dealloc {
    [locationManager release];
    [startPoint release];
    [super dealloc];
}


@end


 =======================================================================================


@synthesize locationManager;

@synthesize startPoint;

프로퍼티로 쏴준것을 @synthesize로 받아줬습니다.

위처럼 하나씩 받아주는것이 어느 변수에서 문제가 생겼는지 빠르게 알수 있기 때문에 권장하고 있습니다.

몇줄 안되는 어플이라 한줄로 썼습니다.


이제 선언하고 사용이 끝난 변수를 해제해줘야합니다.


- (void)viewDidUnload {
    [super viewDidUnload];
    self.locationManager = nil;
    self.startPoint = nil;
}


- (void)dealloc {
    [locationManager release];
    [startPoint release];
    [super dealloc];
}


날림 2장끗