분류 전체보기
-
[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 객체도 ..
-
[Apple Dev Reference] 앱 라이프사이클 The App Life Cycle앱등이에게 살충제를 뿌린다./Apple Dev Reference 2016. 1. 10. 18:44
Apple Developer 문서를 번역만 하였습니다. The App Life Cycle앱은 여러분이 작성한 코드와 시스템 프레임워크간의 상호작용의 결과물이라고 볼 수 있습니다. 프레임워크에서는 앱의 실행에 필요한 환경에 필요한 도구를 제공하고 또한 여러분이 원하는 느낌의 앱을 만들 수 있는 도구를 제공합니다. 이러한 프레임워크를 효과적으로 사용하기 위해서 iOS Infra structure에 대한 간단한 이해가 필요합니다. iOS Framework는 MVC와 Delegation이라는 디자인패턴에 의존하고 있습니다. 완성도있는 앱을 제작하는데에 있어서 이러한 디자인패턴을 이해하는것은 매우 중요합니다. Objective-C언어와 이 언어에 대한 특징을 이해하는 것도 매우 도움이 됩니다. 만약 iOS프로그래..
-
Target-Action앱등이에게 살충제를 뿌린다./iOS 2016. 1. 10. 17:56
Target-ActionTarget-action is a design pattern in which an object holds the information necessary to send a message to another object when an event occurs. The stored information consists of two items of data: an action selector, which identifies the method to be invoked, and a target, which is the object to receive the message. The message sent when the event occurs is called an action message...
-
responder object앱등이에게 살충제를 뿌린다./iOS 2016. 1. 10. 17:37
Responder objectA responder is an object that can respond to events and handle them. All responder objects are instances of classes that ultimately inherit from UIResponder (iOS) or NSResponder (OS X). These classes declare a programmatic interface for event handling and define a default behavior for responders. The visible objects of an app are almost always responders—for example, windows, vie..