<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Strong on letmecompile</title><link>https://www.letmecompile.com/tag/strong/</link><description>Recent content in Strong on letmecompile</description><image><title>letmecompile</title><url>https://www.letmecompile.com/images/default-og-image.png</url><link>https://www.letmecompile.com/images/default-og-image.png</link></image><generator>Hugo -- 0.148.1</generator><language>ko-kr</language><lastBuildDate>Thu, 25 Jul 2013 07:14:14 +0000</lastBuildDate><atom:link href="https://www.letmecompile.com/tag/strong/index.xml" rel="self" type="application/rss+xml"/><item><title>ARC (Automatic Reference Counting) 관련 키워드 사용법</title><link>https://www.letmecompile.com/arc-%EA%B4%80%EB%A0%A8-%ED%82%A4%EC%9B%8C%EB%93%9C-%EC%82%AC%EC%9A%A9%EB%B2%95/</link><pubDate>Thu, 25 Jul 2013 07:14:14 +0000</pubDate><guid>https://www.letmecompile.com/arc-%EA%B4%80%EB%A0%A8-%ED%82%A4%EC%9B%8C%EB%93%9C-%EC%82%AC%EC%9A%A9%EB%B2%95/</guid><description>&lt;p>The LLVM Compiler 3.0 에서 ARC기능이 생기면서 4개의 ownership 지시자가 추가되었다[^1].&lt;/p>
&lt;ul>
&lt;li>&lt;code>__strong&lt;/code>&lt;/li>
&lt;li>&lt;code>__unsafe_unretained&lt;/code>&lt;/li>
&lt;li>&lt;code>__weak&lt;/code>&lt;/li>
&lt;li>&lt;code>__autoreleasing&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>동일한 키워드라도 다음과같이 변수 선언시에는 롱 언더바(__)를 붙여줘야 하고, &lt;code>@property&lt;/code>선언시에는 언더바 없이 키워드만 넣어주면 된다.&lt;/p>
&lt;pre>&lt;code>@interface TreeAdditionObj : NSObject
{
NSString* __unsafe_unretained nodeID;
}
@property (unsafe_unretained) NSString* nodeID;
@end
&lt;/code>&lt;/pre>
&lt;h2 id="strong-참조">&lt;code>strong&lt;/code> 참조&lt;/h2>
&lt;p>ARC를 사용할 때 모든 포인터를 &lt;code>strong&lt;/code>으로 사용하면(&lt;code>strong&lt;/code> 참조가 지정된 포인터 변수에 새로운 객체를 대입하면 해당 객체는 무조건 retain된다는 의미), 두 객체가 서로 참조하게되는 순환 참조(circular reference) 상황에서 메모리 해제가 불가능해진다. 일반적으로 Cocoa나 CocoaTouch개발 프레임웍상에서 객체에 delegate를 사용할 때 이러한 순환 참조 상황이 많이 발생하기 때문에, delegate들에 대해서는 주의해서 &lt;code>weak&lt;/code> 또는 &lt;code>unsafe_unretained&lt;/code>를 사용해야 한다.&lt;/p></description></item></channel></rss>