티스토리 뷰

요즘 일이 좀 있다보니 정신이 없는데 

그 와중에 비교적(?) 간단한 오류가 나서 정리해볼까 합니다. 

 

발생

오류 내용은 다음과 같습니다.

주로 C 나 다른 언어를 섞어 쓰는 상황에서 많이 나온다고 하네요.

(참고로 저 오류가 무더기로 떴는데 앞에 'NSAutoreleasePool' 부분만 다르고 뒤에는 다 동일했습니다.) 

이젠 놀랍지도 않다

 

메세지 속에 답이 있습니다. 

 

특정 모드에서는 저 타입을 사용할수 없다는 뜻이니

그 모드를 찾아서 꺼주시면 됩니다. 

 

해결방법 (비권장)

오늘도 우리들의 Build Setting 으로 들어가 아래 옵션을 NO로 바꿔줍시다.

사실 코드를 수정할수있는 상황이면 아래 방법은 추천드리지 않습니다만

임시적으로 빠르게 이 문제를 해결해야 한다는 경우에만 권장드립니다. 

이렇게 보면 간단하죠?

 

**주의**

다만 해당 옵션이 무엇을 해주는 지는 알고 끄시는게 좋을 것 같습니다. 

생각보다 중요한 일을 하는 친구입니다. 

 

Automatic Reference Counting

- 앱 의 메모리를 자동으로 관리해주는 옵션이라 생각하시면 됩니다. 

- 저희가 코드를 작성하고 별도로 free 나 메모리에 관한 코드를 넣지 않아도 인스턴스가 필요없다고 판단되면 삭제해줍니다.

 

그래서 애플에서는 만약 이 옵션을 정말로 끄고 싶으면 다른 방법을 제시해 줍니다. 

(저는 코드를 수정하기 애매한 상황이기도 하고 다른 부분의 오류도 원인을 알아야해서 임시적으로 위 방법을 사용했습니다.) 

 

 

* Apple 권장 (추천)

@autoreleasepool {
    // Code benefitting from a local autorelease pool.
}

-> 보이시는 이 옵션을 사용하면 저 안에 있는 코드는 자동관리 옵션의 영향을 받지 않는다고 합니다.

-> 본인이 코드를 수정할수있는 상황이시라면 이 방법을 추천드립니다.

-> 이러면 부분적으로 옵션을 해제 시키기 때문에 메모리를 절약할 수 있습니다.

 

처음 보시면 당황하실 수 있지만

알고보면 간단한 편입니다. 

 

오늘도 파이팅입니다.

댓글