2012. 3. 28. 22:55ㆍ제2외국어/에러일지.
정확하게 기억나진 않지만, 단순한 copy와 진짜 copy라는 개념이었던가??
아무튼 단순히 변수(데이터)를 가져오는 것과 변수(데이터) 자체를 공유하는 그런 개념으로 기억한다.
상황
전역변수를 사용하고 있었고, 해당 부분에서 전역변수의 데이터를 불러와 어떠한 처리(가공)을 한 후에 다시 전역변수로 저장하는 방식으로 소스를 구현하고 있었다.
순서
1. 전역변수 A의 데이터를 지역변수 B에 저장 ( B = A )
2. 변수 B를 가공 ( Function(B); )
3. 변수 A에 가공 된 변수 B를 저장 ( A = B )
문제점
단순히 B = A 한 후, B를 가공, A = B 를 하였다. 일반적으로 원하는 데이터를 얻었지만, 단! 어떠한 조건에 의하여 만족하지 못 한다면 순서(3) 즉 가공 된 변수 B를 A에 넣지 않은 처음 상태의 A를 반환해야 했는데 이 부분에서 문제점이 발생했다.
: 단순하게 B = A 로 데이터를 집어넣는다는 의미로 사용하였지만, 이게 진짜 copy(?) 데이터를 공유하게 되어, 어떠한 조건에 의해 B를 가공한 후에 A에 집어넣지 않았지만 A의 데이터는 이미 가공된 데이터가 들어가게 되었다.
해결책
copy라는 개념을 좀 더 공부해야겠지만, 일단은 아무리 같은 형식의 변수일지라도 무조건 '='을 통해 집어넣기 보다는 init[...] or set[...] 등의 자체 함수를 통하여 집어넣는 방식을 습관해 하자. 라는 임시 해결책을 내었다.
교훈 : 편한게 늘 빠르고, 또 정확하지는 않더라
ps. 아 생각났다... 쉘로우와 딥 개념이었지 공부 ㄱㄱ
'제2외국어 > 에러일지.' 카테고리의 다른 글
AVCaptureVideoDataOutputSampleBufferDelegate 사용 시에.. (0) | 2012.11.06 |
---|---|
스토리보드에서 TableView에서 Static Cells를 사용할 때 (0) | 2012.09.12 |
[error]Received fatal alert: certificate_unknown & toDerInputStream rejects tag type 66 (0) | 2012.06.28 |
performSelector 로 인자가 있는 메서드를 보낼때... (0) | 2012.04.17 |
[error]warning: couldn't add 'com.apple.XcodeGenerated'?? (2) | 2011.10.25 |