'전체보기'에 해당되는 글 126건

  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. 2011.07.01 우분투 10.04 부팅 순서 변경 4
  10. 2011.04.25 우분투에서 ssh 접속 속도가 느린 경우
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:@"동영상 주소"];

2011. 7. 1. 09:19

우분투 10.04 부팅 순서 변경

윈도우와 우분투를 같이 설치하게 되면 디폴트로 우분투가 상단에, 윈도우가 가장 하단에 있게 된다.
이 순서를 바꾸고 싶다면 아래의 파일을 편집하면 된다.

/boot/grub/grub.cfg
2011. 4. 25. 16:41

우분투에서 ssh 접속 속도가 느린 경우

우분투 서버를 이용하다보면, 로컬 네트워크 임에도 로그인 시 속도가 느린경우가 있다.
이런 경우에는 아래의 내용을 확인한다.

1. /etc/ssh/sshd_config 파일을 연다.
2. UseDNS 가 no로 되어있는지 확인한다.(yes면 no로)
3. 만약 해당 문구가 없다면 UseDNS no 를 추가해준다.

그리고 ssh 를 재시작한다.

# /etc/init.d/ssh restart

만약 ssh 설정을 수정하기 싫다면,
/ets/hosts 파일을 열어 접속하려는 PC의 IP를 추가해주면 된다.