Swift언어의 autoreleasepool는 인수로 함수를 받는 것으로 Objective-C언어와 비슷한 구문으로 설명할 수 있습니다. 그러나, 여기에는 함정이 있는데 Objective-C에서 사용하던 형태로 작성하면 문제가 됩니다.

[objc]
@implementation Kim
{
int _counter;
}

– (void)test
{
_counter = 0;
for (int i = 0; i < 10; i++) {
@autoreleasepool {
if (i == 5) {
return;
}
_counter++;
}
}
}

– (void)start
{
[self test];
NSLog(@”%d”, _counter); // 5
}
[/objc]

autoreleasepool에서 특정 조건이 있으면 return함수에서 빠지겠다는 형태를 보여줍니다. Objective-C에서는 5, Swift에서는 9란 결과로 소스코드 구성은 비슷하지만 결과는 다릅니다.

이는 Swift의 autoreleasepool에서 사용한 return은 test함수에서 빠지는 것이 아닌 인수에 전달된 내부함수에서 빠지는 형태라는 것입니다. 즉, break에서 외부 for반복문에서 빠져 나갈 수 없게 됩니다.  Swift는 멤버변수에 접근하기 위해 self.를 붙일 필요가 있다는 것도 큰 차이점인듯 보여집니다.

Facebook Comments

You may be interested

Xcode 기능 확장(Extension) 제거하기
Xcode
shares3 views
Xcode
shares3 views

Xcode 기능 확장(Extension) 제거하기

MJ Kim - 3월 18, 2017

Mac에서 Xcode Source Editor Extension등의 기능확장을 사용하다보면 디버깅시 시스템 환경 설정의 확장이 앱에 등록되는 경우가 있다. 계속해서 목록이 남아 있기…

iOS App Store Review(앱 심사약관) 번역
Swift 3.0
shares113 views
Swift 3.0
shares113 views

iOS App Store Review(앱 심사약관) 번역

MJ Kim - 3월 15, 2017

App Store Review를 번역했다. 사실 이번에 좀 애매한 리젝을 당해서 그걸 이해하고자 정리해본다. 원문링크: https://developer.apple.com/app-store/review/guidelines/ 1. 이약관은? 1.1 앱 개발자로서 프로그램의…

Raspberry Pi 타이머 On/Off 전원제어모듈 RPi1114-Raspberry Pi
IoT by Raspberry Pi
shares9 views
IoT by Raspberry Pi
shares9 views

Raspberry Pi 타이머 On/Off 전원제어모듈 RPi1114-Raspberry Pi

MJ Kim - 3월 04, 2017

RPi1114-Raspberry Pi전원제어 모듈이 있다. 이 제품은 40Pin GPIO핀헤더에 연결하여 사용하는 모듈로 Cortax-M0마이크로컨트롤러 LPC1114를 내장하고 Raspberry Pi의 시작과 정지 순서등을 프로그래밍할…