iOS/iOS Swift 개발 일기

[iOS swift] call by reference 참조타입(클래스)

Developer-Michelle 2022. 8. 27. 12:37

SeSAC2DiaryRealm 프로젝트의 UserDiaryRepository.swift 파일

 

item: UserDiary를 매개변수로 받아서 사용하는데, 이 때 UserDiary는 클래스 타입.

 

self.localRealm.delete(item) 코드로 테이블의 행(즉, realm에서 record)을 지우는 경우, 참조해왔던 item메모리도 같이 지워진다.

 

만약에 removeImageFromDocument(fileName: "\(item.objectId).jpg") 에서, let id = item.objectId 선언 안하고 그냥 item.objectId.jpg로 쓰는 경우, 메모리는 윗줄에서 이미 날라간 상태라 nil.objectId가 되는 꼴이다.

따라서,  let id = item.objectId 을 맨 위에서 선언해주어 item.objectId를 '값'으로 남겨줘야 이걸 가져와서 쓸 수 있다.

 

위 파일은 HomeViewController.swift 파일임

여기선 deleteItem(item: self.tasks[indexPath.row])를 쓴 것에 유의.

값 전달처럼 해준 것.