0

클래스 (MyClass)를 만들고 여러 인스턴스가 필요하며 각 인스턴스에는 여러 타이머, 텍스트 필드 및 레이블이 있습니다. ARC 때문에 타이머가 무효화되었을 때 대상이 할당 해제되었지만 때로는 타이머를 무효화하여 재 할당을 취소 할 수 없습니다. 그래서 저는 AppDelegate (MyClass의 인스턴스를 생성하는 클래스)에 가서 MyClass를 강력한 속성으로 선언했습니다. @property (strong) MyClass *myInstance; 이것은 부분적으로 문제가 다른 인스턴스를 생성 할 때마다 이전 인스턴스가 참조를 잃어 버리고 이전 인스턴스에서 NSTimer를 다시 시작하려고하면 잘못된 액세스가 발생한다는 것입니다. 마지막으로 타이머를 다시 시작하면 문제가 없습니다.선언 된 강력한 속성을 독립적으로 재사용합니다.

myInstance는 속성이므로 새로운 항목을 만들 때마다 AppDelegate는 이전 참조를 잃어 버려 이전 항목을 다시 작성합니다. 강력한 속성을 유지할 수 있어야하지만 어떻게 든 각 인스턴스에 대해 독립적으로 작동하도록하거나 속성이 아니어도 myInstance를 강력한 참조로 만들 수있는 다른 방법을 찾아야합니다.

+0

어쨌든이 디자인은 꽤 깨지기 쉽습니다. NSTimers는 무효화되고 재시작되지 않습니다. 콜백은 틱이 "일시 중지"될 때 틱을 무시하거나 새 팟을 생성해야합니다. – Chuck

+0

@Chuck, 틱을 무시한다는 것은 무엇을 의미합니까? 그리고 어떻게? – Elbimio

+0

@Elbimio : 타이머를 무효화하는 대신 발사 해주십시오. 그럴 때 잠시 멈추었는지 확인하고 그렇지 않은 경우 주기적으로 할 일만하십시오. –

답변

3

NSSet 또는 NSArray와 같은 컨테이너에 인스턴스를 넣으십시오.

+0

Brilliant. 감사! – Elbimio