'아이폰'에 해당되는 글 30건

  1. 2011.12.07 [Xcode] WebView로 웹페이지를 불러오는 간단한 소스
  2. 2011.12.06 [Objective C] 숫자를 표현하는 세가지 방법
  3. 2011.12.05 [Xcode 4.2] 소스 별로 ARC를 해제하기
  4. 2011.12.05 [Xcode 4.2] 스토리보드를 이용한 객체 생성 8
  5. 2011.12.01 [Xcode 4.2] 스토리보드에서 뷰전환시 데이터 처리
  6. 2011.11.30 [Xcode 4.2] 느린 xcode 4 최적화 하기
  7. 2011.11.30 [Xcode 4.2] navigation-based application 프로젝트 생성방법
  8. 2011.11.23 [Xcode] 서버에서 이미지 불러오는 방법
  9. 2010.07.12 아이튠즈에 대한 간단한 설명과 아이폰으로 음악 듣기 1
  10. 2010.07.11 아이폰 벨소리 제작법 1
2011. 12. 7. 13:48

[Xcode] WebView로 웹페이지를 불러오는 간단한 소스

1. interface builder에서 view에 webview를 추가
2. 해당 viewcontroller에서 IBOutlet으로 UIWebView 추가
     (ex. @property (nonatomic, retain) IBOutlet UIWebView *webView;
3. interface builder에서 연결해줌
4. 페이지를 불러와야하는 곳에 아래의 소스를 추가

NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
2011. 12. 6. 14:28

[Objective C] 숫자를 표현하는 세가지 방법

출처 : http://blog.daum.net/hyunggullee/26

아이폰 앱 개발 시 숫자를 표현하기 위해 사용하는 다음 세 가지에 대한 의미를 살펴 본다.

- int:  primitive data type
- NSInteger: Foundation framework data type
- NSNumber: NSNumber 클래스의 인스턴스


1. int는 C에서 왔고 primitive data type(보통 원시 데이터 타입이라고 번역한다.) 최대값이 있는 숫자를 담을 변수에 보통 사용된다. 

2. NSInteger는 현재 사용하고 있는 아카텍처에 맞게  사이즈가 자동으로 설정되는 애플의 Foundation 프레임워크에 있는 특별한 primitive data type이다.

3. 숫자를 표현하기 위해 사용하는 세 번째 방식은 Foundation 프레임워크k의 NSNumber 클래스 인스턴스를 생성하는 것이다. 

int 와 NSInteger는 둘 다 객체(Object)가 아니다. 이 말은 동적 메모리 할당에 대해 걱정할 필요가 없다는 뜻이다. 미리 정의 된 사이즈가 있기 때문이다. 이 두 개의 데이터 타입은 스택(stack)에 생성된다. 힙(heap)에 생성되는 것이 아니라는 점에 주의하자. 그러므로 이 두 타입으로 선언된 변수의 값에 접근하기 위해서 포인터(pointer)가 필요 없다. 이와 유사한 데이터 타입으로 int, NSInteger, CGFloat, CGPoint, CGRect(Foundation Data Types Reference를 참고하라.) 등이 있다. 다시 한 번 말하지만체가 아니다. 그러므로 포인터(*)가 필요 없다.

이제 NSNumber 객체에 대해 살펴 보자.  새 NSNumber 객체는 다음과 같이 초기화 한다.

NSNumber *year = [NSNumber numberWithInt:2011];


그런데 NSNumber의 인스턴스를 생성하는데, +alloc과 -init 메서드가 없다. 아이폰 앱 개발자들은 다 알고 있겠지만, 바로 convenient class methods(보 통 유용한 클래스 메서드라고 번역이 되고 있다.)를 사용했다. 이 방식의 장점은 생성된 객체의 메모리 관리를 직접 할 필요가 없다는 점이다. 생성된 객체를 사용하고 나서 나중에 -release 메시지를 보내지 않아도 된다. 물론 다음과 같이 직접 개체를 생성할 수도 있다. 이 경우에는 직접 메모리 관리를 해야 한다.

NSNumber *year = [[NSNumber allocinitWithInt:2001];


이 렇게 해서 int 타입 2011를 랩핑한 NSNumber의 객체를 생성했다. 그런데 왜, 직접 int 또는 NSInteger를 사용하지 않고 NSNumber를 사용하는가? 하는 의문이 생긴다. 이유는 바로 객체를 만드는 데 꼭 다른 객체를 사용하는 몇몇의 Cocoa 클래스들이 있기 때문이다. 이 들은 primitive type들은 사용할 수 없다. 예를 들어, NSArray가 대표적인 경우이다. NSArray는 다른 객체들로 구성된 컬렉션(collection)을 관리하는 객체이다. 만약 숫자의 목록을 NSArray를 이용하여 관리하고자 한다면 NSNumber 객체를 사용해야만 한다. 물론 C의 배열(array)를 사용한다면 int와 NSInteger를 사용할 수 있다. 그렇지만 그렇게되면 NSArray에 내장된 유용한 많은 기능들은 사용할 수 없을 것이다.
2011. 12. 5. 15:58

[Xcode 4.2] 소스 별로 ARC를 해제하기

ARC는 무척 편한 방법이지만 많은 외부 라이브러리가 ARC에 맞지 않게 되어있다.
Xcode 4.2에서 특정 소스별로 ARC를 해제하는 방법은 아래와 같다.

1. Xcode project tree를 클릭

2. Target을 클릭

3. Build Phases tab을 선택

4. Compile Sources section을 확장

5. ARC에서 제외하고 싶은 하나 또는 더 많은 파일을 선택

6. 엔터키를 한 번친다.

7. -fno-objc-arc 를 타이핑

8. 엔티키를 다시 친다.

9. 각각 파일은 이제 -fno-objc-arc 컴파일러 옵션이 켜졌고 ARC에서 제외될 것이다.


2011. 12. 5. 10:51

[Xcode 4.2] 스토리보드를 이용한 객체 생성

기존의 xib을 이용한 객체생성은 아래와 같았다.

RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"NIB명" bundle:nil];

하지만 4.2부터 스토리보드를 이용할 경우 xib파일이 없기 때문에 위의 방법은 쓸 수 없다.

스토리보드를 이용한 방법은 아래와 같다.

RootViewController *rootViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"identifier"]];

identifier자리에는 스토리보드에서 설정한 view controller의 identifier를 적어주면 된다.

또한 뷰 전환은 아래와 같이 하면 된다.

[모달]
[self presentModalViewController:rootViewController animated:YES];

[푸쉬]
[self.navigationController pushViewController:rootViewController animated:YES];
2011. 12. 1. 16:09

[Xcode 4.2] 스토리보드에서 뷰전환시 데이터 처리

Xcode 4.2 에서는 스토리보드를 이용해 뷰를 push 할 수 있다.
이때 Segue라는 것이 생성되는데, 이 Segue에 Identifier를 주고,
이에 따른 처리를 prepareForSegue 메서드를 이용해 처리할 수 있다.

사용예)
버튼 6개중 하나를 선택해 뷰전환을 할때 전환된 뷰에서 선택한 버튼이 어떤 것인지 알아야할때

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    ContentViewController *contentViewController = (ContentViewController *)[segue destinationViewController];
   
    if ([[segue identifier] isEqualToString:@"btn1Touched"]) {       
        contentViewController.currentMenu = 1;
    }
    else if ([[segue identifier] isEqualToString:@"btn2Touched"]) {
        contentViewController.currentMenu = 2;
    }
    else if ([[segue identifier] isEqualToString:@"btn3Touched"]) {
        contentViewController.currentMenu = 3;
    }
    else if ([[segue identifier] isEqualToString:@"btn4Touched"]) {
        contentViewController.currentMenu = 4;
    }
    else if ([[segue identifier] isEqualToString:@"btn5Touched"]) {
        contentViewController.currentMenu = 5;
    }
    else if ([[segue identifier] isEqualToString:@"btn6Touched"]) {
        contentViewController.currentMenu = 6;
    }
    else {
        contentViewController.currentMenu = 0;
    }

2011. 11. 30. 16:20

[Xcode 4.2] 느린 xcode 4 최적화 하기

터미널 실행

find ./ -name "project.xcworkspace" | xargs rm -Rf

출처 : http://mckdh.net/482
2011. 11. 30. 15:55

[Xcode 4.2] navigation-based application 프로젝트 생성방법

xcode 4.2부터는 프로젝트 생성시 템플릿이 xcode 3이랑 많이 달라졌다.

xcode 3의 navigation-based application 을 xcode 4에서 생성하려면 아래와 같이 하면 된다.

1. Single View application
2. view controller
3. Editor -> Embed In -> Navigation Controller

출처 : http://stackoverflow.com/questions/7869594/xcode-4-2-creating-navigation-based-application
2011. 11. 23. 15:23

[Xcode] 서버에서 이미지 불러오는 방법

-(UIImage *)loadImageWithFromURL:(NSString *)url {
    NSMutableURLRequest *requestWithBodyParams =
                                             [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
    NSData *imageData =
                 [NSURLConnection sendSynchronousRequest:requestWithBodyParams returningResponse:nil error:nil];
    return [UIImage imageWithData:imageData];
}

사용예)
UIImage *image = [loadImageWithFromURL:@"동영상 주소"];

2010. 7. 12. 01:45

아이튠즈에 대한 간단한 설명과 아이폰으로 음악 듣기

아이튠즈를 어려워하시는 분들을 위해 씁니다.
=======================================================================================================

아이폰에 음악을 넣는 방법에는 두가지 방법이 있습니다.
(찾아보면 더 있겠지만 일반적으로...)

공식 프로그램인 아이튠즈를 이용하는 방법이 있고, 서드파티 프로그램인 SharePod을 이용하는 방법이 있습니다.

아이튠즈를 이용하면 공식 프로그램이기 때문에 음악/동영상/프로그램/사진 등등을 모두 관리할 수 있고, 컴퓨터에 잘 관리해준다면 아이폰에 동기화만 해주면 동일하게 적용된다는 장점이 있습니다. 단점은 여러 PC에 관리하기 어렵고 아이폰에 들어있는 음악을 가져오기 어려우며 윈도우용 아이튠즈는 무지 느리다는 단점이 있습니다.

SharePod을 이용하면 동기화 뭐 이런거 필요없이 그냥 넣고 뺄 수 있으며, 프로그램이 무척 가볍습니다. 단점은 음악/동영상/사진만 관리가능하다는 점과 아이폰에서 음악을 꺼내왔을 때 태그가 이상하게 될 수도 있다(왠만하면 제대로 가져오지만 간혹 못가져오는 경우도 생기긴합니다.)는 점이 있습니다.

저같은 경우에는 집에 있는 PC에는 아이튠즈로 아이폰과 동기화하고 다른 곳에서 음악/동영상/사진을 넣거나 꺼내야할 필요가 있을 때는 SharePod을 씁니다.

1. 아이튠즈 설치 및 음악 넣기

2. SharePod으로 음악 넣기


추가.

아이폰의 기본 음악재생 프로그램인 아이팟을 사용할 때 몇가지 팁을 알려드리겠습니다.
1. 음악이 재생 중일 때 흔들면 랜덤하게 다음곡이 재생됩니다.

2. 화면을 한번 터치하면 가사 정보가 있을 경우 가사가 보이고, 재생 스크롤바, 셔플재생, 반복재생을 선택할 수 있는 화면이 나옵니다.

3. 재생 스크롤바를 앞뒤로 움직일 때 세세한 시간 조작이 힘든데(음악/동영상 동일) 세세하게 조작하고 싶을 때는 스크롤바의 동그란 부분을 터치한 다음에 아래로 내리면 고속 스크러빙-1/2 속도 스크러빙-1/4-정밀 순으로 내리는 길이에 따라 바뀝니다. 이 상태로 좌우로 움직이면 더 세세한 조작이 가능합니다.

4. 아이폰을 옆으로 돌리시면 커버플로우(앨범사진으로 노래를 선택하는 화면) 화면이 나옵니다.

5. 아이팟이 background로 재생중일 때(즉, 아이팟 화면에서 홈버튼을 한번 눌러서 빠져나갔을 때)홈버튼을 두번 클릭하면 iOS 3.x 버전은 팝업이 뜨면서 아이팟에 대한 몇가지 조작을 할 수 있습니다. iOS 4.x의 경우에는 홈버튼을 두번 클릭하면 멀티태스킹을 위한 앱 목록이 뜨는데 왼쪽으로 스크롤 해보시면 아이팟에 대한 조작 메뉴가 나옵니다.

6. 화면이 잠긴 상태에서 아이팟을 조작하기 위해 락을 풀 필요는 없습니다. 화면이 잠긴 상태에서 홈버튼을 두번 눌러주시면 아이팟 메뉴가 나옵니다.
2010. 7. 11. 23:36

아이폰 벨소리 제작법

아직 아이폰의 벨소리를 마림바로 쓰고 있는 분들을 위해 썼습니다=ㅅ=
=======================================================================================================
아이튠즈에는 벨소리를 판매하고 있지만 자신이 원하는 음악의 일부분을 벨소리로 만들고 싶을 때가 있습니다.

이런 아이폰용 벨소리를 제작하는 방법에는 여러가지가 있습니다. 아이튠즈를 이용하는 방법이 있는데 간단하지만 fade-in, fade-out같은 설정을 하기 어렵다는 단점이 있습니다.

그래서 아래의 두가지 방법을 추천합니다.
(만약 탈옥을 하셨다면 훨씬 더 간단한 방법으로 가능하나 순정 기준으로 설명하겠습니다.)

1. iRinger 프로그램을 이용하는 방법

2. 웹사이트를 이용하는 방법


이렇게 만들어진 벨소리를 아이튠즈의 보관함에 있는 벨소리에 드래그해서 넣고 동기화를 시켜주시면 아이폰에 벨소리가 저장됩니다.
(위의 iRinger 프로그램을 이용할때 마지막 단계인 Export Ringtone에서 Export to iTunes에 체크하셨다면 아이튠즈에 자동으로 등록되어 있을 겁니다.)

위와 같이 해주시고 위의 화면 우측 하단에 있는 적용버튼을 눌러 주시면 됩니다.
(동기화하지 않고 수동으로 하시려면 그냥 장비-벨소리에 드래그 해서 넣어주셔도 됩니다.)

마지막으로 저장된 벨소리로 변경하려면 아이폰의 설정-사운드-벨소리 로 들어가셔서 선택하시면 됩니다.