IOS
-
[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..
-
[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프로그래..
-
[iOS/Objective-C] NSCopying과 NSCoding의 차이를 알아보자.앱등이에게 살충제를 뿌린다./Objective-C 2016. 1. 7. 23:20
NSCopying과 NSCoding 이름만 들으면 무언가 Array와 Dictionary마냥 유사한 부분이 있을것 같네요. 하지만 그렇지 않아요. 개념만 짚도록 해볼게요. 1. NSCopying copy메소드 아시죠? NSObject에 구현되어 있기 때문에 모든 객체에서 사용이 가능합니다. //편의상 h파일만 #import @interface Person : NSObject @end 이런 클래스가 있다고 가정합시다. 그리고 copy를 시도합니다. unused variable이라는 경고만 있을 뿐, 에러가 발생하지 않습니다. 당연하죠. Person에는 copy메소드가 구현되어 있을테니까요. 실행해보겠습니다. 음.. 같이 웃으며 망년회하던 HR에서 권고사직을 권하는듯한 통수네요. 하루종일 아무일 없다가 함수..
-
[iOS] -(BOOL)writeToFile:atomically: 메소드가 궁금해?앱등이에게 살충제를 뿌린다./iOS 2016. 1. 3. 21:40
-(BOOL)writeToFile:atomically:라는 메소드에 대해서 알아봅니다. writeToFile: 이름만 들어도 File에 객체를 쓸 것 같네요. 맞습니다.객체를 file에 아카이빙 하는 메소드입니다. atomically: 이름만 들어도 한번에 모든일을 동시에 처리할 것 같습니다. 맞습니다.atomically:에 YES를 전달하면 아카이빙은 임시 백업 파일에 먼저 기록하고 기록이 모두 성공하면 최종 데이터를 지정한 파일에 저장하게 됩니다.원본 파일의 손상을 막을 수 있고 시스템이 크래시를 내는일을 방지합니다. NSDictionary *glossary = @{@"class":@"class is good",@"struct":@"struct is also good"}; if ([glossary w..
-
[Apple Dev Reference] NSURL Class 초간단소개 by Apple Reference앱등이에게 살충제를 뿌린다./Apple Dev Reference 2015. 12. 4. 00:08
Apple Developer 문서를 번역만 하였습니다. NSURL NSURL은 리모트 서버의 데이터를 나타내는 주소값, 로컬디스크에 저장된 파일의 경로, 또는 실제 데이터를 나타내는 값 등을 나타내는 객체입니다. URL객체를 통해 URL을 만들거나 그 안에 담긴 경로에 접근할 수 있게 됩니다. 로컬 파일을 나타내는 URL의 경우에는, 파일의 수정 날짜를 바꾸는 것처럼 파일의 특징을 다루고 수정할 수도 있습니다. 어쨋든, URL객체는 URL에 담긴 콘텐츠를 열어보기 위한 다른 API에 던져지는 역할을 하게 됩니다. 예를 들면, NSURLSession, NSURLConnection, NSURLDownload와도 같은 클래스들을 통해서 리모트 서버의 데이터에 접근할 수 있습니다. 방법은 URL Session ..