Swift에서 프로그래머는 객체 사이의 루프를 끊을 책임이 있습니까?

이안 링 로즈

내가 알기로 Swift는 가비지 수집을 위해 자동 참조 계산을 사용합니다.

이것은 제가 COM 프로그래머 였을 때로 수년을 거슬러 올라갑니다.

VB6 (및 이전)은 객체가 범위를 벗어날 때 참조 횟수를 줄이는 프로세스를 자동화했습니다. 대부분의 경우 프로그래머가 메모리 관리를 잊어 버리는 데 충분했습니다.

그러나 객체 사이에 루프가 있다면 .eg

Car->WheelsCollection contains pointers to wheels
Wheel->CurrentCar constrains a pointer to the car the wheel is currently installed on

그런 다음 자동차의 인스턴스가 범위를 벗어 났을 때 자동차는 바퀴가 살아 있고 바퀴가 살아 있기 때문에 쓰레기 수거되지 않습니다.

이 문제를 피하거나 완화하기 위해 Swift에서 어떤 프로그래머 패턴 또는 기타가 사용됩니까?

Leandros

이것은 간단한 유지주기이며 약한 참조를 사용하여 해결해야합니다.

이것을 현재 수업으로 가정합니다.

class Car {
  var wheel: Wheel?
}

class Wheel {
  var currentCar: Car?
}

그리고 현재 상황

var myCar: Car? = Car()
var myWheel: Wheel? = Wheel()

myCar!.wheel = myWheel

이를 해결하려면 그 중 하나를으로 선언해야합니다 . weak예 : weak var currentCar: Car?.

공식 Swift 문서는 여기에 설명되어 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

루프를 사용하지 않고 목록에서 객체의 색인을 얻는 방법이 있습니까?

분류에서Dev

NodeJS에서 무한 루프를 끊는 프로그래밍 방식이 있습니까?

분류에서Dev

왜 객체의 상태는 그 객체를 루트로하는 객체 그래프의 필드의 하위 집합이 될 수 있을까?

분류에서Dev

함수형 프로그래밍 인스턴스 메서드에 대한 일부 책에서는 동반 객체에 정의 된 이진 함수에 위임합니다. 그 뒤에 실용적인 이유가 있습니까?

분류에서Dev

R에서 for 루프를 사용하여 이름을 객체에 저장하는 데 문제가 있습니다.

분류에서Dev

manim의 그래프 객체에서 ReplacementTransform을 사용할 수 있습니까?

분류에서Dev

Vue3에서 객체를 생성하는 루프를 만드는 방법이 있습니까?

분류에서Dev

특정 값을 포함하는 객체에서 임의의 요소를 찾는 방법이 있습니까 ()

분류에서Dev

ios에서 프로그래밍 방식으로 통화를 끊는 방법이 있습니까?

분류에서Dev

함수 내에서 파이썬 while 루프를 끊을 수 없습니다.

분류에서Dev

파이썬에서 for 루프를 사용하여 여러 클래스 객체를 어떻게 정의 할 수 있습니까?

분류에서Dev

파이썬에서 거북이와 토끼 종족을 프로그래밍하기 위해 객체 지향 프로그래밍을 어떻게 사용합니까, 더 구체적으로, 실제로 어떻게 움직일 수 있습니까?

분류에서Dev

iOS 11.3.1의 이미지에서 프로그래밍 방식으로 생성 된 ARReferenceImage 객체를 사용할 수 있습니까?

분류에서Dev

drools에서 무한 루프를 감지하고 프로그래밍 방식으로 세션을 중지하는 방법이 있습니까?

분류에서Dev

Python에는 루프에서 데이터 프레임을 만들고 데이터 프레임 이름에 숫자를 사용하는 방법이 있습니까?

분류에서Dev

데이터 프레임의 컬럼 (numpy 객체)에서 조건을 만족하는 인덱스를 어떻게 찾을 수 있습니까?

분류에서Dev

프로그래밍 방식으로 파이썬 모듈에서 객체를 가져 오는 방법이 있습니까?

분류에서Dev

프로그래밍 방식으로 파이썬 모듈에서 객체를 가져 오는 방법이 있습니까?

분류에서Dev

모든 중첩 루프 뒤에 레이블을 붙여 한 번에 모두 끊는 방법이 있습니까?

분류에서Dev

MongoDB 커서 객체를 사용하는 동안 EJS에서 forEach 루프가있는 HTML 테이블을 올바르게 생성합니까?

분류에서Dev

루프에서 생성 된 객체가 루프 반복이 끝날 때 해제되는 것을 어떻게 방지 할 수 있습니까?

분류에서Dev

열린 C 함수에 대한 프로그래머의 맨 페이지는 어디에 있습니까?

분류에서Dev

런타임에 객체 선택이 결정되는 C ++ 객체 구성을 사용할 수 있습니까?

분류에서Dev

Cygwin의 X11 앱에서 프로그래머 dvorak 레이아웃을 어떻게 사용할 수 있습니까?

분류에서Dev

함수를 호출하는 동안 루프를 끊을 가능성이 있습니까?

분류에서Dev

함수를 호출하는 동안 루프를 끊을 가능성이 있습니까?

분류에서Dev

파이썬에서 루프를 사용하여 팬더 데이터 프레임의 이름을 어떻게 지정할 수 있습니까?

분류에서Dev

swiftyJson이 가져온 json을 기반으로 swift에서 내 클래스의 객체를 어떻게 만들 수 있습니까?

분류에서Dev

긴밀한 결합을 끊기 위해 Swift에서 프로토콜을 사용하는 것이 좋습니다.

Related 관련 기사

  1. 1

    루프를 사용하지 않고 목록에서 객체의 색인을 얻는 방법이 있습니까?

  2. 2

    NodeJS에서 무한 루프를 끊는 프로그래밍 방식이 있습니까?

  3. 3

    왜 객체의 상태는 그 객체를 루트로하는 객체 그래프의 필드의 하위 집합이 될 수 있을까?

  4. 4

    함수형 프로그래밍 인스턴스 메서드에 대한 일부 책에서는 동반 객체에 정의 된 이진 함수에 위임합니다. 그 뒤에 실용적인 이유가 있습니까?

  5. 5

    R에서 for 루프를 사용하여 이름을 객체에 저장하는 데 문제가 있습니다.

  6. 6

    manim의 그래프 객체에서 ReplacementTransform을 사용할 수 있습니까?

  7. 7

    Vue3에서 객체를 생성하는 루프를 만드는 방법이 있습니까?

  8. 8

    특정 값을 포함하는 객체에서 임의의 요소를 찾는 방법이 있습니까 ()

  9. 9

    ios에서 프로그래밍 방식으로 통화를 끊는 방법이 있습니까?

  10. 10

    함수 내에서 파이썬 while 루프를 끊을 수 없습니다.

  11. 11

    파이썬에서 for 루프를 사용하여 여러 클래스 객체를 어떻게 정의 할 수 있습니까?

  12. 12

    파이썬에서 거북이와 토끼 종족을 프로그래밍하기 위해 객체 지향 프로그래밍을 어떻게 사용합니까, 더 구체적으로, 실제로 어떻게 움직일 수 있습니까?

  13. 13

    iOS 11.3.1의 이미지에서 프로그래밍 방식으로 생성 된 ARReferenceImage 객체를 사용할 수 있습니까?

  14. 14

    drools에서 무한 루프를 감지하고 프로그래밍 방식으로 세션을 중지하는 방법이 있습니까?

  15. 15

    Python에는 루프에서 데이터 프레임을 만들고 데이터 프레임 이름에 숫자를 사용하는 방법이 있습니까?

  16. 16

    데이터 프레임의 컬럼 (numpy 객체)에서 조건을 만족하는 인덱스를 어떻게 찾을 수 있습니까?

  17. 17

    프로그래밍 방식으로 파이썬 모듈에서 객체를 가져 오는 방법이 있습니까?

  18. 18

    프로그래밍 방식으로 파이썬 모듈에서 객체를 가져 오는 방법이 있습니까?

  19. 19

    모든 중첩 루프 뒤에 레이블을 붙여 한 번에 모두 끊는 방법이 있습니까?

  20. 20

    MongoDB 커서 객체를 사용하는 동안 EJS에서 forEach 루프가있는 HTML 테이블을 올바르게 생성합니까?

  21. 21

    루프에서 생성 된 객체가 루프 반복이 끝날 때 해제되는 것을 어떻게 방지 할 수 있습니까?

  22. 22

    열린 C 함수에 대한 프로그래머의 맨 페이지는 어디에 있습니까?

  23. 23

    런타임에 객체 선택이 결정되는 C ++ 객체 구성을 사용할 수 있습니까?

  24. 24

    Cygwin의 X11 앱에서 프로그래머 dvorak 레이아웃을 어떻게 사용할 수 있습니까?

  25. 25

    함수를 호출하는 동안 루프를 끊을 가능성이 있습니까?

  26. 26

    함수를 호출하는 동안 루프를 끊을 가능성이 있습니까?

  27. 27

    파이썬에서 루프를 사용하여 팬더 데이터 프레임의 이름을 어떻게 지정할 수 있습니까?

  28. 28

    swiftyJson이 가져온 json을 기반으로 swift에서 내 클래스의 객체를 어떻게 만들 수 있습니까?

  29. 29

    긴밀한 결합을 끊기 위해 Swift에서 프로토콜을 사용하는 것이 좋습니다.

뜨겁다태그

보관