2010-01-14 1 views
8

@synthesize는 빌드시 접근자를 생성하는 반면, 필자는 @dynamic이 런타임에 접근 자 메서드를 만드는 것을 읽었습니다.@dynamic과 @synthesize의 차이점은 무엇입니까?

@dynamic은 일부 메모리를 절약하고 코드는 메모리 페이지에서 더 작게 유지됩니까? 또는 무엇을? 다른 차이점은 무엇입니까?

"@synthesize가 아닌 @dynamic을 사용하는 것이 항상 좋은 생각입니까?" 내 말은 ... 그게 정말로 기억을 저장한다면, 왜 안돼?

하지만 @dynamic에는 @synthesize보다 몇 가지 단점이 있습니다. 그렇지 않으면 모든 사람들이 @dynamic을 사용합니다. 그래서 단점은 무엇입니까?

답변

21

아니요. 동적 속성이 자동으로 생성되지 않습니다.

Objective-C Programming Language Guide에서 :

@dynamic

당신은 당신이 성취됩니다 컴파일러에게하는 @dynamic 키워드를 사용 @dynamic 속성 마커는 어떻게 든 접근 및 setter를 제공 할 것입니다 컴파일러에 지시 API 구현은 메소드 구현을 직접 제공하거나 런타임에 코드의 동적로드 또는 동적 메소드 해석과 같은 다른 메커니즘을 사용하여 속성에서 암시합니다.

7

아니요, @dynamic은 런타임에 구현이 제공 될 것이라고 말합니다. @synthesize은 컴파일러에게 구현을 작성하도록 지시합니다. 예를 들어 런타임시 속성 구현을 생성하는 Core Data와 함께 @dynamic을 사용합니다. 둘 중 하나를 사용하지 않으면 컴파일러는 구현을 제공한다고 가정합니다.

2

아니요, @dynamic이 메모리/코드 크기 이점을 얻지 못합니다

관련 문제