티스토리 툴바


IPHONE/Objective-C2012/02/14 17:08

참고)iOS 디버그 & 최적화 기법

1.alloc,new,copy로 시작하지 않는 메시지는 생성된 오브젝트는 자동으로 해제 된다.

2.만약 그런 오브젝트 중에 자동으로 해제되면 곤란한 경우에는 retain을 호출한다.

3.alloc,new,copy로 시작하는 메시지로 생성된 오브젝트를 자동으로 해제하고 싶을땐,autorelease 메시지를 보낸다.

4.retain,release는 레퍼런스 카운트를 즉석에서 증감 시키지만, autorelease는 지연하면서 레퍼런스 카운트를 감소 시킨다.


 
저작자 표시
Posted by 헬리
IPHONE/Objective-C2012/01/20 11:27


1. Empty Application 으로 프로젝트를 생성 한다.
2.New - File 해서 User Interface - Empty 를 한다.
3.Device Family - iPhone 로 변경하여 프로젝트를 생성 한다.
4.MainWindow.xib 를 선택 한후 Object 를 하나 추가 한다. Object의 Class명을 Delegate의 최상의 클   래스 명으로 바꾼다.
5.File's Owner 의 Class명을 UIApplication으로 변경 한다.
6.Window View를 하나 새로 Object 밑에 하나 추가 한다.
7.Delegate.h 파일에 UIWindow *window -> IBOutlet UIWindow *window 로 변경한다.
8.File's Owner 를 App Delegate 에  Outlets로 연결 한다.
9.App Delegate에서 Outlets를 Window 를 Window에 연결 한다.
10.Delegate 의 m파일에서 (BOOL)application 메서드에서 [self.window makeKeyAndVisible]; 와               return YES;를 제외한 나머지 소스를         주석처리 한다. 

11.Target 프로젝트의 Main Interface를 MainWindow로 변경 한다  
저작자 표시
Posted by 헬리
A* 알고리즘이란 
 - 넓이 우선 탐색에 깊이 우선 탐색을 조합하여 휴리스틱한 기법을 사용한 알고리즘입니다..

흠!! 처음에 이 말을 보는 순간 우리나라 말이 아닌줄 알았음..!!

하나하나 쪼개서 살펴 보자..



넓이 우선 탐색(BFS) : 위의 이미지에서 시작 지점이 1이라고 정하자 그럼 탐색 순위가 
                              넓이 우선 탐색은 시작지점과 갈려고 하는 지점이 같은것부터 탐색을 시작 한다
                              즉 출발 지점 1에서 한칸만 가서 갈수 있는 곳이 2,4,5 이다 여기서 가장 숫자가 적은 2 부터 검색을
                              하게 된다. 다 검색을 한 후에 이제 두칸을 이동 하여 갈수 잇는 3을 검색 하게 된다.
                              즉 1 , 2 , 4 , 5 , 3 이 순서대로 탐색을 하는 방법을 BFS라고 할수있다.

깊이 우선 탐색(DFS) : 역시 출발 지점이 1이라고 정하자 거기서 가장 가깝고 가작 적은 노드 부터 검색을 시작 한다.
                               그럼 한칸 이동한 2가 될것이도 2에서 검색 할수있는 노드 중에서는 3, 그다음 4, 이제 모든 검사를
                               다 한 상태여서 마지막에 5를 검색 할것이다.
                               자연스럽게 1,2,3,4,5 순서대로 탐색을 하게 된다. 이 방법을 DFS라고 할수 있다.

 
저작자 표시
Posted by 헬리

a = a + b;
b = a - b;
a = a - b;



-----------------------   속도 더 바르게 ---------------------
a = a ^ b;
b = a ^ b;
a = a ^ b;

---------------------- 이상입니다..!!!
저작자 표시
Posted by 헬리
TAG SWAP
분류없음2011/10/19 10:18

1.NSString형을 int형으로 변경 하는 방법.

NSString *str = @"7";

int i = [str intValue];

NSLog(@"i = %d",i);


2.int형을 NSString형으로 변경 하는 방법.

int i = 7;

NSString *str = [NSString stringWithFormat:@"%d",i];


이상입니다. ^^


저작자 표시
Posted by 헬리
IPHONE/Objective-C2011/08/03 17:36

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
 {
UIMenuController *menuController = [UIMenuController sharedMenuController];
if (menuController) {
[UIMenuController sharedMenuController].menuVisible = NO;
}
return NO;
}

그냥 이거 붙여 넣으면 됩니다. ^^

피드백은 리플로 받겠습니다.~!~! ^^

또한 텍스트 필드를 비번 입력 하듯이 안보이게 설정 하는 방법
[textPassword setSecureTextEntry:YES];

이렇게 설정 해주면 됩니다. ^^ 여기서 textPassword 는 텍스트 필드명입니다.~! 사용자 마다 틀리겠죠? ^^
저작자 표시
Posted by 헬리
IPHONE/Objective-C2011/07/29 17:13

로그인 view를 만드는 프로젝트를 하는 중에 E-mail 텍스트 필드나 유져 아이디를 입력 받는 텍스트 필드는

영어만 들어 가야 하는 조건이 많이 있습니다.

따라서 그 텍스트 필드의 값 NSString를 ASCII로 변환 하여 사용 하는 법이 편할것 같습니다.

변환 하는 법은

for(int i = 0 ; i < [[temp text] lenght] ; i++)
{
      int c = [[temp text] characterAtIndex:i];

    NSLog(@" char %d = %d",i,c);

}

이렇게 하여 각 특수 문자의 아스키 코드값을 확인 해도 되고 NSString의 길이 만큼 쪼개서 아스키 코드값을 볼수 있게 됩니다.

여기서 temp는 텍스트 필드 명입니다. ^^

참고)  @   = 64
           .     = 46

이 되겠습니다. E-mail 만들시에 @가 들어가 있지 않으면 팝업창을 띄어 주기 위해서 이 부분을 이용해도 될것 같네요 ^^

이상입니다.~!~!
저작자 표시
Posted by 헬리
IPHONE/Objective-C2011/07/21 16:53


흔히 UIView 의 애니메이션을 주고 싶은 경우가많을 것입니다.
iOS에서 몇가지를 지원해주지만 위에서 아래로 아래에서 위로 혹은 좌에서 우로 우에서 좌로의 애니메이션은 직접 만들어야 합니다.

그럼 간단한 예제 소스를 보이겠습니다.~!~!

[UIView beginAnimations:nil context:NULL];

[UIView setAnimationDuration:0.3];


CGRect r = self.testview.frame;

const double move = r.size.height;

//숨길때 쓰는 구간입니다.(1)

r.origin.y -= move;



//나올때 쓰는 구간입니다.(2)
r.
origin.y += move;

self.testview.frame = r;

[UIView commitAnimations];

여기서 testview는 움직이고자 하는 view입니다.

상황에 따라 틀리겠지만 현재 testview가 보이고 있는 상태에서 버튼 클릭시 안보이게 하기 위해서는 그냥 (1)번만
사용하면 됩니다.

그런데 testview가 안보이는 상태에서 (2)을 사용하여 보이게 하기 위해서는
처음에 view를 초기화 할때 testview의 좌표를 수정 해주어야 합니다.

예를 들자면 testview의 크기가 320*480이면
[self.testview setFrame:CGRectMake(0,-480,320,480)];
이렇게 좌표를 변경 해주어야지만 없는 상태에서 (2)을 사용하면

화면에 보이게 됩니다.
또한 위의 소스에서 빠진 부분이 addSubview 는 당연히 해주어야 합니다. ~! 이상입니다. ~!

저작자 표시
Posted by 헬리
IPHONE/Objective-C2011/07/20 14:23

h파일에 일단
UIActivityIndicatorView *aiv;


m파일에

//초기화를 해줌과 동시에 어떤 형태의 로딩 애니메이션을 할지 정해 줍니다.(색깔인가?)~!
aiv = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

//좌표랑 크기를 지정 해줍니다.
aiv.frame = CGRectMake(0,0,40,40);

//지정한 뷰에 addSubview를 해줍니다.,원하는 뷰에 붙이시면 됩니다.
[testLogin.view addSubview:aiv];

//aiv 를 시작해줍니다.
[aiv startAnimating];

저작자 표시
Posted by 헬리
분류없음2011/07/06 10:33
일단 파일로 첨부된 파일을 프로젝트에 추가 시킵니다. 이 파일은 인터넷에서 많이 돌아 다니는 게임센터를 따로 클래스 별로 
모아 놓은 형식입니다. 아주 잘 되어 있는데 필요 한 부분이 있으면 사용자가 추가 하면서 하면 될꺼 같습니다.

저는 cocos2d에서 Game Center의 구동을 위해서 view 방식을 바꾸어 놓은 상태 입니다.
아마 show~!~!~ 하는 함수들의 주석을 지우고 openGL의 view 방식을 주석 처리 하시면 일반 view에서 사용 하실수 있습니다.

그리고 제가 따로 추가 한 부분이

-(void)retrivePlayScore 이 부분이 유져의 점수를 가져 오는 부분 입니다.
            조금만 더 바꾸시면 유저의 아이디 랭킹도 가져 올수 있습니다. ^^

궁금한점이 있으시면 ~!~! 댓글 달아 주세요 ^^ 

저작자 표시
Posted by 헬리