1) 메소드 여럿이 등록된 델리게이트 A를 B에 참조 한 뒤,
A를 날리거나 완전히 새로운 다른 메소드를 등록
그 이후에 필요할때 다시 B를 A에 참조시켜 원래 상태로 복구하는게 가능?
*Delegate가 뭔지 모르는 자바충/기타언어충을 위해 설명해주자면
C의 함수포인터 같은개념이다. Java충을 위해 다시 설명해주자면
메소드를 참조할 수 있는 객체이다.
개잘댐 --;;;
ㅅㄱㄹ
1) 메소드 여럿이 등록된 델리게이트 A를 B에 참조 한 뒤,
A를 날리거나 완전히 새로운 다른 메소드를 등록
그 이후에 필요할때 다시 B를 A에 참조시켜 원래 상태로 복구하는게 가능?
*Delegate가 뭔지 모르는 자바충/기타언어충을 위해 설명해주자면
C의 함수포인터 같은개념이다. Java충을 위해 다시 설명해주자면
메소드를 참조할 수 있는 객체이다.
개잘댐 --;;;
ㅅㄱㄹ
ㅎㅎ 델리게이트는 스레드 할때말곤 안써봐서
결국 참조형 데이터니까 del의 값은 힙에 존재하는 상태이고, copy가 del의 값을 가지는게 아니라 del이 참조하고 있는(힙안 공간의)주소를 참조하고 있는거임. del = first; del+=second; del+=third까지 하면 del이 값을 가지는게 아니고 del이 참조하고 있는 힙 영역의 주소를 가지고 있는거니까 copy= del 을 하면 del이 가리키는 주소와 copy가 가리키는 주소가 같은거임.
그래서 다시 del = copy 해도 del이 가리키고 있던 주소를 copy가 가지고 있는거라, 결국 원상복귀가 됨
00// 니가전글에 쓴 글에서는 기존 인스턴스를 날린다고 되있엇는데 날린다는게 결국 hip에 저장된 메모리를 날린다는건데
그걸 해제자 써서 GC작동하게 하면 작동안될걸? 니가 말한 날린다는게 다른 인스턴트로 초기화 한다는말임?
참조를 날린다는거였는데 뜻이 잘못전해졌나봄. 인스턴스 날린단 소린 안함. 지금 하려고 하는게 특정 상황/조건에서 기존에 delegate에 등록되어있던걸 모조리 무시하고, 다른 메소드(저 코드에선 Interupt)가 실행되고, 다시 이전상태로 돌아갈 수 있게 하려고 물어본거임
좀 더 자세히 말하자면 게임에서 데미지 면역상태를 구현해보기위해 질문했던거임. 피격 Delegate에 참조된 메소드 들(피격시 유발되는 모든 것)이 동작 안하게 하다가, 데미지 면역이 끝나면 다시 피격 Delegate가 제 기능을 하기 위해서
학식들 힘내 - dc App
난 학식아니당 담주부터 출근하는 백수다
대학교 입학도 못한 고졸임다
어렵다