이제 프레임워크를 추가합니다.
추가할 프레임 워크는 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];
}
'프로그래밍 > iOS' 카테고리의 다른 글
맵뷰(MapView) 4장 - 원하는 위치를 표시(Pin Annotation)하자!! (0) | 2012.02.09 |
---|---|
맵뷰(MapView) 3장 - CLLocation을 이용해 MapView에 현재위치 표시하기 (0) | 2012.02.09 |
맵뷰(MapView) 1장 - ViewController 추가 (0) | 2012.02.09 |
탭바(UITabBarController) 3장 - 탭바 아이템 (1) | 2012.02.09 |
탭바(UITabBarController) 2장 - 최상위뷰 구현 (0) | 2012.02.09 |