반응형

ARC가 도입되면서 


프로퍼티에 대한 설정이 여러가지가 있는데 이중 


Strong, Weak, Assign 이 존재한다. 


Strong은 강한참조 


Weak는 약학참조 


Assign은 단어 그대로... 


assign은 primitive 형식의 변수 (int, float, double) 같은 경우 사용해야 하며 


객체 형식의 변수인 경우 Strong 이나 weak를 이용한다. 


인터넷 자료를 찾아보면 weak와 strong 가장 큰 차이는 


크게 다음과 같다.


1. Retain counting 차이 

- strong 은 참조 할때 마다 retain count가 증가.

- weak는 참조 할때 마다 retain count가 증가 하지 않음.


2. 참조를 유지 하는지 여부 

- strong은 참조를 유지하고 있어야 할때 

- weak는 실수로 라도 참조를 유지 하지 않아야 할때 


3. 메모리 해제 처리 

- strong은 사용하지 않을 경우 nil로 지정을 해주어야 한다.

- weak는 강제로 nil로 지정하지 않아도 된다. (자동 지정) 


정리한게 틀렸을 수도 있다. 


그래서 나중에 다시 확인 하고자 정리 하려 한다.



참고 자료 : 

1. https://m.blog.naver.com/PostView.nhn?blogId=itperson&logNo=220825568956&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F 

2. http://simyungk.tistory.com/36 

3. http://rakuraku.tistory.com/67 


반응형
Posted by onlyTheOne
,
반응형

Objective-c 에서 nil 상태가 된 object를 call 할때 crash 또는 exception이 발생하는지가 


명확히 이해 하고 있지 않았다. 


그래서 찾아 보고 직접 해 보았다. 


그랬더니....



Custom Class에 대한 객체를 만들었는데 역시나 되었다. 



Objective-c 에서 nil은 id타입의 빈 포인터 이다. 



자 그럼 초심으로 돌아가 이게 왜 문제가 없는지... 


내가 놓친 부분이 무엇인지 살펴 보자... 


되는 이유가 있지만 왜 되는지 설명을 못하니깐 ^^ 





반응형
Posted by onlyTheOne
,
반응형

처음 2009년 iOS 개발할때는 아이폰도 없고 아이팟 터치를 사비로 구해서 했었다.


당시 했던건 한글오토마타를 적용한 터치환경 기반의 디바이스에서의 한글입력에 관한 논문을 쓰기 위해서 였다. 


개발에 있어서 부족한 것도 많았다. 도서관에서 책을 구입 요청 하여서 

(학교도서관에 나로 인해 관련 도서가 처음 구비되었다 ) 


보기 시작한지 어느덧 2016년 그동안 iOS만 쭉 해왔다면... 2010년 부터 필드에서 개발을 해왔다면 

지금쯤 iOS쪽으로 6년차? 개발자가 되었을 것이다. 

아직도 부족한게 많고 봐도 봐도 어려운게 개발인거 같다... (타고난건 아니니깐...) 

언제까지 개발을 할지 모르겠지만 나에게 큰 힘을 준 iOS 개발은 정말 자바 이후로 가장 강력한 

힘이 되었다.


반응형
Posted by onlyTheOne
,
반응형

아무 생각 없이 왜 db에 데이터가 업데이트가 안되지.... 라고 생각했는데


bundle resource 안에 db 파일이 있었던 것이다. 이 영역은 readonly 영역 


따라서 db file을 읽고 쓸려면 document 폴더나 cache 폴더에 복사해 놓고 거기서 써야 한다. 

ㅎㅎㅎ 

반응형
Posted by onlyTheOne
,
반응형

iOS에서는 Core Data, Sqlite 등을 이용할 수 있다.


문젠 Core Data의 경우 앱이 처음 구동할 경우 (처음 설치시에) 기본 데이터가 

저장된 케이스를 만들기 위한 작업이 필요로 하다. 


알아 보니 크게 

1. JSON 이나 파일 DB로 데이터를 로드해서 Core Data에 쓰는 법 

2. 외부 sqlite 파일을 별도로 두어서 로드해 오는 것 

3. 그 외???? 


Core Data가 sqlite 처럼 쓰는거긴 한데 참으로 머리가 아프다 

기본 데이터를 추가한 걸 써야 하는데 그냥 sqlite를 써야 할지 

아니면 기본 데이터 추가 작업을 하도록 할지 고민이다. 


 

반응형
Posted by onlyTheOne
,
반응형

nine patch 이미지를 iOS에서도 적용할 수 있었다.


 잘 설명된 블로그 두 곳을 소개 한다. 


http://comxp.tistory.com/220

http://silpmomo.tistory.com/entry/iOS안드로이드-나인패치-처럼-아이폰-이미지-변형하기


나인패치를 쓸까 말까 고민이다. 


한번 도 써 본적이 없어서 ㅎㅎㅎ 



반응형
Posted by onlyTheOne
,
반응형

아래 내용은 메모 형식의 기록이다. 잘못된 것도 있을수 있겠지만 

겪은 내용을 적어둔다. 


iOS 7.0 이상에서 landscape mode로 앱을 만들경우 


launch image 가 없으면 


iPhone 4.0inch는 -> iPhone 3.5inch 로 대응

iPhone 4.7 inch는 -> iPhone 4.0 inch로 대응됨.


그러니 반드시 랜드스케이프 모드여도 런치 이미지를 지정해주는 것이 좋음. 


반응형
Posted by onlyTheOne
,
반응형

    AVPlayerItem *playItem = [AVPlayerItem playerItemWithURL:url];
   
    self.currentPlayer = [AVPlayer playerWithPlayerItem:playItem];
    [self.playerView setPlayer:self.currentPlayer];
    [self.playerView setVideoFillMode:AVLayerVideoGravityResizeAspectFill];
   
   
   
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    [UIView animateWithDuration:0.3 animations:^{
        [self.view setFrame:CGRectMake(0.0f, 0.0f, 480.0f, 320.0f)];
        [self.view setCenter:CGPointMake(160.0f, 240.0f)];
        [self.view setTransform:CGAffineTransformMakeRotation(M_PI/2)];
        [self.view bringSubviewToFront:self.playerView];
    }];
   
    [self.playerView.player play];
   
}

- (void) setPlayStop {
    [self.playerView setVideoFillMode:AVLayerVideoGravityResizeAspect];
    [self.playerView.player pause];
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    [self.view setNeedsDisplay];
    [self.view setFrame:CGRectMake(0.0f, 0.0f, 480.0f, 320.0f)];
    [self.view setCenter:CGPointMake(160.0f, 240.0f)];
    [self.view setTransform:CGAffineTransformMakeRotation(0)];
}


반응형
Posted by onlyTheOne
,
반응형

인터넷으로 찾아 보니 iphone Packet을 wireshark로 capture 할 수 있다.

전에 페북에 링크를 보내긴 했는데 혹시 몰라 블로그에 남겨 둔다.

아래 출처의 사이트에 설명이 잘되어 있어서 참고 했다.


1. 준비물 : Organizer를 통해 패킷을 캡쳐 하고 싶은 디바이스의  UDID를 알아 내야 한다. 

2. 방법

   - 터미널을 연다

   - 다음 명령어를 입력하여 iphone 패킷을 미러링 설정 : rvictl -s UDID (디바이스)

   - wireshark를 열어 rvi0 또는 rvi1을 선택 패킷 캡쳐

   - 패킷 캡쳐가 끝난다음 미러링 해제 : rvictl -x UDID (디바이스)


끝~

참고 자료 출처 : http://yisangwook.tumblr.com/post/41488012225/mac-packet-capture


반응형
Posted by onlyTheOne
,
반응형

XIB를 이용한 UITableView Edit mode 예제

코드 참고하세요

TableViewExample_WithXIB.zip


좀더 명확히 보실려면 개발자 도큐먼트를 참고하세요

참고 문헌 경로 : http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/tableview_iphone/ManageInsertDeleteRow/ManageInsertDeleteRow.html#//apple_ref/doc/uid/TP40007451-CH10-SW1

반응형
Posted by onlyTheOne
,