앱등이에게 살충제를 뿌린다.
-
[Apple Dev Reference] iOS에서 텍스트 프로그래밍하기앱등이에게 살충제를 뿌린다./Apple Dev Reference 2016. 2. 21. 23:56
Apple Developer 문서를 번역만 하였습니다. Managing the Keyboard사용자가 TextField, TextView 또는 웹뷰에 있는 입력필드를 터치했을 때 시스템에서 키보드가 보여지게 됩니다. 키보드의 여러 속성에 따라 어떤 키보드를 보여줄지 설정할 수가 있습니다. 또한 에디팅이 시작되거나 끝날 때에 키보드를 어떻게 처리할 지도 결정할 수가 있습니다. 포커스되어 있는 부분을 키보드가 가리게 될 수도 있기 때문입니다. 따라서 포커스되는 부분을 키보드영역위로 올라오게 하여 포커스된 UI가 잘 보이게 하는 방법도 이에 포함됩니다. Keyboards and Input Methods사용자가 input이 가능한 객체를 터치할 때마다 이 객체는 시스템에게 적절한 키보드를 띄우라고 요청을 보내게..
-
[NSHipster - iOS] 객체의 동등성 Equality 와 Identity에 대하여앱등이에게 살충제를 뿌린다./iOS 2016. 1. 26. 22:56
Equality & Identity먼저 Equality와 Identity간의 차이를 아는 것이 중요합니다. 같은 관찰가능한(Observable)프로퍼티들을 공유하고 있다면 두 객체는 Equal하다고 볼수있습니다. 또한 각 객체는 자신만의 Identity를 가지며 서로 독립적(distinct)이라고도 할 수 있습니다. 프로그래밍에 있어서 Identity는 객체의 메모리 주소와 관련되어 있는 부분입니다. NSObject클래스에서는 isEqual:메소드를 통해 다른 객체와의 equality를 판단합니다. 이 기본적인 메소드의 구현부에는 바로 두 객체의 identity를 비교하는 과정을 거칩니다. 두개의 NSObject객체는 같은 메모리 주소공간을 가리키고 있어야 Equal하다고 판단하게 됩니다. @implem..
-
[iOS] NSURLConnection이 deprecated되었기에 우리는..앱등이에게 살충제를 뿌린다./iOS 2016. 1. 26. 00:14
문제 상황 NSURLRequest를 통해서 리모트에 있는 파일을 다운로드 하고싶어요. NSData *data에 담고싶은데 말이죠.. 코드는 아래와 같습니다. NSURL *Urlstring = [NSURL URLWithString:@"http://yourdomain.com/yourfile.pdf"]; NSURLRequest *request = [NSURLRequest requestWithURL: Urlstring]; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirec..
-
[NSHipster - iOS] Enumeration,Iteration,Traverse.. 반복문의 퍼포먼스에 대해 알아보자앱등이에게 살충제를 뿌린다./iOS 2016. 1. 22. 22:56
여러 기법의 프로그래밍에서 반복문은 항상 성능상의 이슈를 데리고 다닙니다. 절차적/구조적 : Loop내에서 포인터를 증가시킵니다. 객체지향 : 컬렉션 내부의 각각의 객체에 대한 함수나 메소드를 실행시킵니다. 함수형 : 재귀와 자료구조를 통해서 작동시킵니다. Objective-C에서는 C기반의 절차지향과 Smalltalk기반의 객체지향의 특징을 모두 갖고 있습니다. 아래에서 그 방법들에 대해 설명합니다. 1. C Loops(for/while) for문과 while문 정말 고전적일 정도로 익숙한 방법이죠. 아래와 같습니다. for (NSUInteger i = 0; i < [array count]; i++) { id object = array[i]; NSLog(@"%@", object) } 이러한 C기반의 반..
-
[iOS] Objective-C로 하는 비동기 처리앱등이에게 살충제를 뿌린다./iOS 2016. 1. 20. 23:40
비동기 처리 -asynchronous operation 또는 concurrent라고도 할 수 있겠습니다. 소요시간이 오래 걸리는 작업을 백그라운드에서 돌린 뒤 메인스레드에 반영하는 용도로 많이 사용되죠? 제가 아는 3가지 기법을 간략히 소개할까합니다. 1. NSObject객체의 - performSelectorInBackground:withObject: 메소드 입니다. NSObject객체에 구현되어 있으므로 사실상 모든 객체에서 호출이 가능합니다. 말그대로 백그라운드에서 실행하고 싶은 메소드를 SEL타입으로 파라미터에 전달하면 백그라운드에서 실행이 됩니다. 추가로- performSelectorOnMainThread:withObject:waitUntilDone: 메소드는 SEL타입을 메인스레드에 추가하는 역..
-
[iOS] Block을 사용할 때 주의해야할 점 : 순환참조(RetainCycle)로 인한 Memory Leak앱등이에게 살충제를 뿌린다./iOS 2016. 1. 17. 19:28
Block은 캡쳐링을 통해 Context의 걊을 전달하는 기능을 갖고 있습니다. 캡쳐링이 가능하기 때문에 장점을 가지기도 하지만 구멍또한 존재합니다. 1. 문제 발생 예제를 통해서 보겠습니다. 1. ViewController 객체 내부에서 model이란 객체를 strong으로 갖고 있구요. 2. model에서 ViewController를 참조하게 되는 블락을 전달하려고 합니다. Capturing 'self' strongly in this block is likely to lead to a retain cycle. : block에서 self를 강하게 참조하고 있기 때문에 순환참조 발생 가능성이 있습니다.라고 하고있네요. 네. model 객체에서 viewcontroller객체를 강하게 참조하고 있고 view..
-
[iOS] Block의 캡쳐링과 __block앱등이에게 살충제를 뿌린다./iOS 2016. 1. 17. 18:07
__block이 Block의 캡쳐링에 미치는 영향에 대해서 알아보자 결과는 : 23 42 17이 나오게 된다. 결과는 : 17 17 17 이 나오게 된다. 왜냐하면 Block은 생성이 될 때 주변의 Context에서 캡쳐링을 하게 된다. 즉 Block외부에 있는 변수들의 값을 상수 형태로 저장한 뒤 사용하게 되는 것이다. Block은 생성되는 시점과 호출되는 시점이 다르다는 특징이 있는데, 이 때 캡쳐링이 장점으로 작용하는 경우가 많다. 첫 번째 경우를 볼 때, block1의 NSLog(@"%d", val)은 NSLog(@"%d",23);으로 선언된 것과 다름이 없다. 물론 block2의 경우도 NSLog(@"%d",42);로 선언이 된것과 같은 다르지 않다. 하지만 두 번째 경우에는 다르다. val을 ..
-
[Apple Dev Reference] KVO - Key-Value Observing Programming Guide앱등이에게 살충제를 뿌린다./Apple Dev Reference 2016. 1. 17. 16:44
Apple Developer 문서를 번역만 하였습니다. Key-Value Observing Programming 에 대한 소개 Key-value observing이란 특정 객체의 프로퍼티의 변경사항에 대한 알림을 받을 수 있도록 하는 메커니즘입니다. 중요! key-value observing을 이해하기 전에 key-value coding을 먼저 알고 계셔야 합니다. 한 눈에 보기 Key-value observing은 다른 객체의 특정 프로퍼티들의 값이 변경될 때 알림을 받을 수 있는 메커니즘을 제공합니다. 이는 앱의 model과 controller layer간의 통신에 매우 유용하게 사용될 수 있습니다. controller object에서 주로 Model객체의 프로퍼티들을 옵저빙합니다. view 객체도 ..