2009-07-20 4 views
2

코코아에서 매분 기능을 실행할 수있는 방법이 있는지 궁금합니다. 개인적으로, 사용자가 종료 할 때마다 입력 할 때 콘텐츠를 저장하는 데 개인적으로 사용합니다. 그러나이 효과가 Twitter 클라이언트에서도 사용되는 것을 보았습니다. 사용자가 창을 열어두면 사용자가 입력하지 않고 x 분마다 자동으로 업데이트됩니다. 그것은 이것이 일반적인 것, 그리고 언어가 그것을 허용하는 것, 나는 그것에 대한 문서를 찾을 수없는 것 같습니다.코코아에서 1 분마다 기능 실행

도움 주셔서 감사합니다.

답변

6

개인적으로, 사용자가 종료 할 때마다 사용자가 입력 한 내용을 개인적으로 저장하기 위해이 기능을 사용합니다. 그러나 나는이 효과가 Twitter 클라이언트에서도 사용 된 것을 보았습니다.

더 나은 솔루션 텍스트 뷰의 대표, 그리고 (아직 수행하지 않은하거나 이미 해고 한 경우) 비 반복 타이머를 만들어 textDidChange:에 응답 할 수 및 화재 날짜를 설정하는 것 앞으로 X 초가됩니다. 그런 다음 사용자는 최대 1 분이 아니라 최대 X 초 동안의 작업을 잃지 만 사용자가 아무 것도 입력하지 않으면 타이머가 실행되지 않습니다.

+0

안녕 피터 : 나는 확실히 이것을 들여다 보겠다. – PF1

+0

Peter : 이것은 잘 작동하는 것처럼 보입니다.하지만 텍스트를 입력 할 때 내 애플리케이션 창이 많이 지연됩니다. 나는 그것이 함수가 실행될 때마다 디스크에 파일을 저장하기 때문에 이것이라고 생각한다. 필자는 각 함수가 실행될 때마다 새 타이머를 만들지 않는 방법을 잘 모르기 때문에이 함수에서 타이머를 구현하지 않았습니다. 이것이 내 문제를 해결할 것이라고 상상하지만, 나는 이것을 달성하는 방법을 확실히 모른다. 어떤 아이디어? – PF1

+1

타이머가 시작되면 (이전에 유지 한 경우) 타이머를 놓고 변수를 'nil'로 설정합니다. 그런 다음'textDidChange :'에서 타이머가 존재하는지 여부를 테스트 할 수 있습니다. 또한'textDidChange :'에서 직접 함수를 호출하거나 메시지를 보내지 마십시오. 그냥 타이머를 만들고, 그것이 발동 될 때 메시지를 보냅니다. –

2

NSTimer docs을 확인하십시오. 그것은 당신이 원하는 것을 정확히 수행합니다. 원하는만큼 반복 할 NSTimer를 만들고 지정된 인수를 사용하여 특정 함수를 호출합니다.

+0

안녕하세요 Dan : NSTimer의 목적입니다. 이전에이 클래스를 살펴 보았지만 함수에 사용할 수 있다는 것을 잘 모르고있었습니다. 당신의 도움을 주셔서 감사합니다. – PF1

+1

NSTimer는 함수를 직접 호출 할 수 없습니다. 그것은 오직 객체에게만 메시지를 보낼 수 있습니다. 해당 메시지에 대한 사용자의 응답은 함수를 호출하는 것을 포함하여 원하는 어떤 것이 될 수 있습니다. 즉, 나는 당신이이 일을 할 수있는 이유를 생각할 수 없다. 메소드에서 자동 저장을 수행 할 가능성이 큽니다. –

2

나는 개인적으로, 사용자 유형과 같은 저장 내용이 사용하게 될이 경우에 그들은 당신이, autosaving을 원하는 당신을 위해 돌봐하는 그런

를 종료합니다.

+0

@ Graham Lee 내 NSTextFields가 화면에 동적으로 추가 되더라도이 작업을 수행 할 수 있습니까? – PF1

+0

그들이 나타내는 텍스트가. 서 모델의 일부인 경우, 예입니다. –