2017-04-13 2 views
0

저는 MacOS 프로젝트에서 Swift outlet 콜렉션을 사용하려고 시도 해왔고 현재로서는 가능하지 않다는 것을 배웠습니다. 나는 아직도 왜 그렇게 당황 스럽다. 그러나 이것이 어떤 시점에서 수정된다고 생각할 때, 나는 또 다른 걱정거리가있다.스위프트 IBOutlet 컬렉션 및주기 안전 유지

@IBOutlet weak var someButton: NSButton! 

하지만 수집 구문을 발견 한 예는 약한 수정을 포함하지 않는 :

나는 콘센트는 일반적으로 "루트"출구를 제외하고, 약한해야 사이클을 유지 방지하기 위해 이해 , 나는 (1) 의미가 있음을 넣어, (2) 붉은 깃발하지 않는 곳 발견되지 않은 : 그래서

@IBOutlet var severalButtons: [NSButton]! 

을, 나는 분명 뭔가를 놓친 거지? 그러한 콘센트 컬렉션이 보관주기를 만들지 않을 것이라고 확신 할 수 있습니까? (허용되는 것으로 추정되는 경우)

+0

콘센트를 '약하게'할 이유가 없으며 참조주기를 생성하지 않습니다. – Sulthan

답변

1

IBAction 또는 IBOutlet과 달리 IBOutletCollection은 인수로 클래스 이름을 사용합니다. 최상위 오브젝트로서 IBOutletCollection을 강하게 선언해야합니다. 자세한 내용은 here입니다.

따라서이 제한으로 인해 IBOutletCollection은 보유주기를 만들 수 있습니다.

+0

저는 우리가 같은 페이지에 있다고 생각합니다. 컬렉션 자체가 강력한 참조를 가져야한다는 것을 이해합니다. 컬렉션 배열 내의 강력한 참조가주의하지 않으면 문제가 발생할 수 있다는 의문을 확신하게됩니다. 하지만 제 경우에는 콜렉션이 소유 될 것입니다 (MacOS 때문에 가상의 순간입니다). 따라서 인터페이스 내의 소유권은 더 이상 단순한 트리가 아니라 지시 된 비순환 그래프입니다. 하지만 소유권은 여전히 ​​"비순환 적이기"때문에 나는 괜찮을 거라고 생각합니다. –

+0

@JeffJ 다행입니다. 그러면 어떤 대답을 찾고 있습니까? –

+0

나는 가능한 한 지금까지 나를 대답했다고 생각한다. 컬렉션에 대한 Swift 구문이 약한 콘센트 참조를 설정할 가능성을 허용하지 않는 것처럼 보이기 때문에 뭔가 놓친 것이 걱정되었습니다. 여전히 이상하게 보입니다. MacOS 프로젝트에서 IB가 콜렉션의 존재를 인식하지 못하는 이유에 대해 신경 쓰지 않는다면, 아이폰 OS 프로젝트에서는 괜찮습니까? 그렇지 않으면 고마워요. –