a 파일이 안올라가는건 버그가 아니라 svn 설정 때문에 그렇습니다. 


터미널에서

vi ~/.subversion/config 


라고 타이핑 하신후 enter 하시면 svn 설정 관련 파일이 열리는데요.. 중간쯤 보면 global-ignores 라는 파트가 있습니다. 


그곳에 *.a 라고 되어 있는 파트를 지워주시면 commit시 a파일도 올라갑니다.


global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.pyc *.pyo



터미널에서 편집시 

커서 위치에서 x 버튼을 클릭 하면 삭제 됩니다. 


다 편집 후 


:w 명령어 입력후 터미널을 닫으면 저장이 완료 됩니다. 




가끔 맥에서 키를 등록 할려고 하는데 

아래와 같은 에러가 발생 할때가 있다


'시스템 루트' 키체인을 수정할 수 없습니다.


이때는 당황하지 말고 드래그앤 드랍으로 키를 넣으면 된다~


^^ 이상입니다.~


NSString <-> const char *


const char* convert = "hello remove this: *";

NSString *input = [[NSString alloc] initWithUTF8String:convert];// convert 

//remove * FROM THE STRING          
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"*"]; 

// REPLACE * WITH NOTHING                   
input = [[input componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];

// CONVERT BACK         
const char *converted_back = [input UTF8String]; 


참고 링크 : http://stackoverflow.com/questions/10284011/convert-const-char-to-nsstring-and-convert-back-nsautoreleasenopool




//도큐먼트 폴더 주소

    NSString *documentsDir = [NSString stringWithString:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]];

    

    //라이브러리 폴더 주소

    NSString *LibraryDir = [NSString stringWithString:[NSHomeDirectory() stringByAppendingPathComponent:@"Library"]];

    

    //라이브러리->캐쉬폴더 폴더주소

    NSString *Library_CachesDir = [NSString stringWithString:[LibraryDir stringByAppendingPathComponent:@"Caches"]];

    

NSFileManager *fm = [NSFileManager defaultManager];

    //도큐먼트 폴더안에 있는 파일 리스트 가져온다.

    NSArray *list = [[NSFileManager defaultManagercontentsOfDirectoryAtPath:documentsDir error:nil];

    //파일 리스트 갯수를 가져와서..

    int fileCount = [list count];

    //갯수가 0이 아니면 아래 실행..(갯수가 0이면 빈 폴더임)

    if (fileCount!=0)

    {

        //도큐먼트안에 파일들을 라이브러리->캐쉬 폴더로 이동시킨다.

        for (NSString *path in [fm contentsOfDirectoryAtPath:documentsDir error:nil])

        {

            [fm moveItemAtPath:[documentsDir stringByAppendingPathComponent:path] toPath:[Library_CachesDir stringByAppendingPathComponent:path] error:nil];

        }

        

        //도큐멘트 안에 파일을 지운다.

        for (NSString *path in [fm contentsOfDirectoryAtPath:documentsDir error:nil])

        {

            [fm removeItemAtPath:[documentsDir stringByAppendingPathComponent:path] error:nil];

        }

    }


참고 주소 : http://jaesung2124.tistory.com/31


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

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

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

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

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


 


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로 변경 한다  

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

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

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

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

이렇게 설정 해주면 됩니다. ^^ 여기서 textPassword 는 텍스트 필드명입니다.~! 사용자 마다 틀리겠죠? ^^

로그인 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 만들시에 @가 들어가 있지 않으면 팝업창을 띄어 주기 위해서 이 부분을 이용해도 될것 같네요 ^^

이상입니다.~!~!


흔히 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 는 당연히 해주어야 합니다. ~! 이상입니다. ~!

h파일에 일단
UIActivityIndicatorView *aiv;


m파일에

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

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

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

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

+ Recent posts