아이폰 생성관련 코드 정리한것입니다 많이 보세요[펌글]

버튼 : (viewDidLoad)에써줌

-(void)viewDidLoad {
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(80, 50, 150, 100)];
[self.view addSubview:button];
[button setTitle:@"자동차" forState:UIControlStateNormal];
[button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];//이벤트사용시
}

ex) window-based에서 버튼생성시

UIButton *button=[[UIButton alloc]initWithFrame:CGRectMake(47, 362, 60, 35)];//[[UIButton buttonWithType:UIButtonTypeCustom]retain];
[button.titleLabel setTextColor:[UIColor blackColor]];
[button setTitle:@"자동차" forState:UIControlStateNormal];
button.titleLabel.textColor = [UIColor blackColor];
[self.view addSubview:button];

레이블 : (viewDidLoad)에써줌

UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(20, 30, 100, 150)];
label.text = @"텍스트";
[self.view addSubview:label];
[label release];

뷰(viewDidLoad)에써줌

UIView *view1=[[UIView alloc]initWithFrame:CGRectMake( 0, 0,300,400)];
view1.backgroundColor=[UIColor redColor];
[self.view addSubview:view1];

alertview프로토콜 : <UIAlertViewDelegate>적용

UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"내가만든것" message:@"조심해" delegate:self
cancelButtonTitle:@"확인" otherButtonTitles:@"취소",nil];   //메서드에 써줌
[alert show];
[alert release];
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if(buttonIndex == 0)
[label setText:@"확인을 누르셨습니다"];
else
[label setText:@"취소를 누르셨습니다"];
}

ActionSheet 프로토콜 : <UIActionSheetDelegate>적용

-(void)click2{
NSLog(@"두번째 버튼을 누르셨습니다");
UIActionSheet *action = [[UIActionSheet alloc]initWithTitle:@"다이얼로그" delegate:self cancelButtonTitle:nil
destructiveButtonTitle:nil otherButtonTitles:@"확인", @"취소", @"재시도", nil];
[action showInView:self.view];
[action release];
}
-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{
if(buttonIndex==0)
label.text=@"확인";
else if(buttonIndex ==1)
label.text =@"cancel";
else
label.text =@"재시도";
}

이미지뷰 생성 : (loadView)에씀

[super loadView];
UIImage *img = [UIImage imageNamed: @"image2.png"];                          // 불러올 이미지 파일 가져옴
UIImageView *imageView = [[UIImageView alloc] initWithImage:img];     // 이미지 파일을 뷰에 붙임
[imageView setUserInteractionEnabled:YES];                                       // 이미지뷰가 인터렉션 할 수 있게
[img release];
self.view = imageView;               // 이미지뷰를 현재 뷰에 붙임
[imageView release];

스크롤뷰 생성해서 이미지출력 : 프로토콜<UIScrollViewDelegate>적용

UIImage *img = [UIImage imageNamed: @"image2.png"];                          // 불러올 이미지 파일 가져옴
UIImageView *imageView = [[UIImageView alloc] initWithImage:img];     // 이미지 파일을 뷰에 붙임
[imageView setUserInteractionEnabled:YES];                                       // 이미지뷰가 인터렉션 할 수 있게
CGSize imgSize = [img size];                                                // 현재 불러온 이미지의 크기 확인
[img release];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:frame];       // 스크롤뷰 생성
[scrollView setScrollEnabled:YES];    // 스크롤뷰 스크롤 가능하게
[scrollView setContentSize:imgSize];   // 스크롤뷰의 크기 설정
[scrollView addSubView:imageView];  // 위에서 만든 이미지뷰를 스크롤뷰에 올림
[imageView release];// 이미지뷰 없앰 (다 사용했으므로...)
self.view=scrollView;
_imageView=imageView;//인스턴스 멤버변수쓰는공간에 "UIImageView *_imageView;"만듬, 확대/축소를한 출력이미지를 _imageView에 넣음
[scrollView setMaximumzoomScale:2.0f];      // 스크롤뷰의 최대 확대 크기 지정
[scrollView setMinimumzoomScale:0.5f];      // 스크롤뷰의 최소 축소 크기 지정
[scrollView setDelegate:self];                      // 델리게이트 설정
// 스크롤뷰를 현재 뷰에 붙임
[scrollView release];
 // 이 메서드는 줌을 사용할 뷰를 반환해야 합니다
- (UIView *)viewForZoomingInScrollView:(UIScrollView *) scrollView    //확대축소관련 메서드 델리게이트를 꼭지정해야함
{
return _imageView;
}
-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale//줌을 한 이 후의 동작에 대해서 지정해 줄 수 있습니다.

view 붙이기 : loadView에 씀

UIScreen *screen = [UIScreen mainScreen];        // 자기 자신(MyUIView) 스크린 생성
CGRect frame = [screen applicationFrame]   ;     // 그릴 스크린의 프레임 얻기  bounds 는 전체 사이즈, applicationFrame은 어플리케이션 사이즈
UIView *myUIView = [[UIView alloc] initWithFrame:frame];    // 프레임 크기에 MyUIView 영역 초기화
myUIView.backgroundColor = [UIColor blueColor];    // MyUIView의 배경색 설정
self.view = myUIView;        // 현재의 뷰 연결, 화면에 설정한 뷰 나타남
[myUIView release];

참고 : http://cafe.naver.com/mcbugi/111755

Advertisements

아이폰 개발 팁(삼항연산자, 메모리관리)

팁1. 삼항 연산자

A?B:C 의 형태로 사용하는 삼항연산자는 Objective-C 에서도 동일하다. A?B:C 형태로 사용하며 A가 참이면 B, 그렇지 않으면 C가 리턴이 된다.

 

팁2. 메모리 관리, 단 두가지만 기억하면 됩니다. — HeadFirst iPhone Development 에서 발췌

메모리 관리는 큰 앱일 경우 상당히 골치 아픈 문제가 될 수 있습니다. 그래서 애플은 다음과 같은 두 가지 규칙을 정해서, 누가 언제 릴리즈 및 리테인에 대해 책임지는지 체계적으로 안내하고 있습니다.

1. 여러분이 alloc, new, copy, 또는 mutableCopy 메소드로 다른 객체르 생성했다면, 여러분이 release 해야 합니다.

– 여러분이 alloc, new, copy, 또는 mutableCopy 메소드로 다른 객체를 생성했다면, 그 개체는 리테인 카운트가 1이 되며, 그 객체를 더 사용하지 않으면 여러분이 직접 release 해야 합니다. release 메시지를 나중에 보내고 싶다면, 그 객체를 오토릴리즈 풀(autorelease pool)에 직접 넣을 수도 있습니다.

2. 그렇지 않은 경우라면, 객체가 이미 오토릴리즈 풀에 들어있고, 리테인 카운트는 1이라고 생각하십시오.

1번과 다른 방법으로 객체를 얻었다면(스트링 포메터, 배열초기화 등), 그 객체는 오토릴리즈 풀에 이미 들어있고 리테인 카운트는 1이라고 생각하십시오.(현재 메소드의 처리가 끝나면 그 객체는 없어져 버릴 수도 있다는 의미입니다.) 다시 말하면, 현재 메소드의 처리가 끝나고 나서도 계속 그 객체를 사용하고자 하는 경우에는 꼭 리테인을 해야 한다는 의미입니다.(리테인한 경우에는 꼭 릴리즈 해 주어야 합니다.)

펌글 (맥부기) 기획자에 관해서 알 수 있는 중요한 댓글이라고 생각됨

경험에서 나온 좋은 말씀 정말 감사드립니다. 제경우 미국에서 어릴때 부터 자라면서 프로젝트 매니저라는 직함으로 오랜동안 일하다가 최근에 한국에 파견근무를 하면서 한국에서 말하는 “기획자”가 미국과 많이 다른것을 알게 되었습니다. 기획자라고 하면 군에서 말하는 “작전장교”라서 군사학을 공부했고 병법/병학에 능한 사람이라고 누구나 생각합니다. 또한 방송국의 PD와 같아서 어떻게 해야 청취률이 놓아지고 성공을 하는가 알고 있어야 합니다. 미국에서는 이런 직위를 Program Manager/Project Manager에게 맡기고 있으며 엔지니어링의 기술 뿐만 아니라 MBA (경영학사), PMP (프로젝트 관리 자격증) 등을 가지고 있는 경우가 많습니다. 한국에서 기획자라는 분들을 많이 만나 뵈었으나 “나는 대박나는 아이디어가 있으니 기획자다”의 경우가 많았으며, 어떻게 만들고 어떻게 홍보를 해서 마켓에서 성공하는가.. 또 사용자나 마켓에 어떻게 해서 어필을 한다.. 는 노하우도 없는 경우도 많아서.. 도대체 무었을 기획한다는 말인가.. 하는 생각을 한적도 많았습니다.

두번째 조언 주신것 처럼 개발한다/프로젝트 한다고 하면 여기 저기서 자기는 좋은 아이디어가 있는데 같이 협업하자는 제의가 많이 들어 옵니다. 그런데 이야기를 들어보면 거의 기가차는 경우가 많았습니다. 거의 “초소형 파리 크기의 정찰 로보트를 만들고 그것을 무선으로 조종할수 있게 만들어 첩보용 기기로 만들면 대박납니다…” 수준의 아이디어인데.. 초소형으로 만드는 기술은 가지고 계신가요? 조종 하는 방법과 조종 교육은 어떻게 하나요? 라고 물으면.. 그건 개발자가 만들어야죠… 라고 류의 대답을 듣습니다. 아래 유튜브 동영상과 똑 같은 경우가 실제로 있으니까요.
http://www.youtube.com/watch?v=XRdZ0SSDZXQ

위에처럼 어처구니 없는 경우를 보다보니, 저도 십수년 프로젝트관리만 하다가 이제 혼자서라도 하기 위해서 Objective-C 책을 펴고 이 새벽에 맥북앞에 앉아 있습니다. 혼자서 새벽잠을 줄여서도 하고 싶은 일과 꿈이 있어서 하고는 있지만… 사실 마음 깊은곳에서 이것도 정답이 아니다.. 라는 생각에 두렵습니다. 아래는 전에 썻던 글인데 실험을 통해서 인간의 뇌는 집중을 하면서 동시에 크게 볼수 없다는 진실
http://cafe.naver.com/mcbugi/115053

이 것처럼 마케팅에 능해서 유행 트린드를 알고 기획을 하며, 프로젝트 기술로 철저한 계획을 하며.. 동시에 몰입을 하며 코딩을 하고 하는것이 가능할지.. 반대로 뛰어난 개발자가 만드는데는 능하지만, 고객들 앞에서 매일같이 프레센테이션을 하고, 팀원들을 다독거리고, 능숙하게 외국어로 국제적 대인관계까지 신경쓰는것이 현실적으로 가능할지..

그것은 집중해서 공던지는 숫자도 세고, 고릴라도 보고 다 하겠다고 하는.. 인간의 두뇌상 불가능을 욕심내는것이 아닐지.

그래도.. 포기 않고 이 새벽에 잠을 줄여서.. ObjC 파고있습니다. 낮에는 대기업의 Proj Manager로 수십명의 엔지니어들을 이끌고 대기업 돈을 벌어 주지만.. 밤과 새벽에 잠을줄여 세상에 도움이 필요한 사람과 아이들에게 도움이 될 엡을 꼭.. 만들어 보고 싶네요… 그것이 두뇌상 불가능 하다고 해도.. 대박의 꿈을 쫓는것이 아니라.. 사용하는 사람들.. 필요한 사람들을 위해서.. 만드는것이라면 언젠가는 성공에 다가가 이르지 않을까 생각해 봅니다.

출처 : http://cafe.naver.com/mcbugi/123982 의 댓글중

 

HeadFirst iPhone 개발 두번째 앱, 트위터 연동 부분 InstaTwit

책을 보면서 트위터 앱을 만들고 있던 중, 트위터 연동 부분의 코드를 트위터가 더이상 지원하지 않아서 막혀있다가, 어떻게든 완성해 보고 싶어서 알음알음 물어물어 찾아서 Sharekit이라는 것을 알게 되었고, 오레일리 게시판을 읽어보면서 문제를 해결했다. 개발 경험이 미천한 나에게는 아주 값진 경험이었다.

간단하게 정리하면, ShareKit 사이트로 가서 페키지를 다운 받는다.

압축을 풀고 Classes>ShareKit>Sharers 폴더을 선택한후 XCODE의 Classes 폴더에 추가한다.

.h 파일에는 #import “SHK.h” 와 #import “SHKTwitter.h” 를 추가하고,

.m 파일의 -(IBAction)sendButtonTapped:(id)sender{

……

SHKItem *item = [SHKItem text:themessage];

[SHKTwitter shareItem:item];

}

두줄을 추가한다.

한가지 더 트위터 개발자 센터에 들어가서 앱을 등록해야 하는데, xAuth 까지는 테스트할때 필요하지 않으므로 트위터에서 앱등록시는 브라우저로 등록한다.

트위터에 앱을 등록할 때, 헛갈릴 수 있는 부분이 callback url 부분을 등록하는 부분인데 자기가 가진 도메인중 아무거나 선택해도 상관이 없다.

callback url 는 트위터로 앱을 연동시킨후에 이동하게 되는 주소인데, 이 부분은 ShareKit 이 자동으로 처리해 준다. 다만, SHKConfig.h 에서 CallbackUrl로 기록된 부분에 자신이 트위터 앱을 만들때 썼던 주소를 사용하기만 하면 된다.

OAuth로 등록할 경우 SHKConfig.h에서 등록해 줄 내용은 xAuth(등록하려고 한다면 1로 값을 바꿔주면 된다)를 제외한 총 네가지다. 이 부분은 쉽게 따라가실 수 있을 것이다.

개발 문서를 보면 다양한 활용이 가능할 것 같다.

페이스 북도 같은 방법으로 진행하면 된다. SHKConfig.h 에서는 두가지(FacebookKey, FacebookSecret)만 입력하면 되므로 더 간단하다.

아이폰 개발시 중요 참고 사이트

http://lambert.tistory.com/ : 티스토리 개인블로그

http://cafe.naver.com/mcbugi : 네이버 맥부기 카페

http://developer.apple.com/ : 애플 개발자 센터

http://www.cocoalab.com/?q=becomeanxcoder : Cocoa 와 XCode 입문하기

http://www.cocoadev.co.kr/tag/Cocoa%20Lab. : OS X에서 cocoa 맛보기

http://moogab.com/116259750 : IB 응용의 끝인듯

http://theeye.pe.kr/ : 아이군의 블로그

http://iphoneos.co.kr/ : Korea iOS Developer Group 의 HTTP/HTTPS 통신

http://fmttm.egloos.com/4324991 : iPhone NSURLRequest 사용법 POST 전송 방식

http://www.iphonesdkarticles.com/2009/01/uitableview-searching-table-view.html : UISearchBar 공략시 참고 사이트

http://www.zzerr.net/tag/cozymood.com : Cozymood 제작자 왠만한 웹관련 기능들은 다 있어서 분석해 볼만한 오픈스소 앱이다.

http://alones.kr/1523 : JSON 관련해서 배울 수 있는 좋은 사이트

http://www.ibm.com/developerworks/kr/library/x-ioschat/index.html : 처음부터 iPhone 대화 앱 빌드하기