아이 폰 패키지 적용

4406 단어 iPhone
여기 서 의 패 킷 은 컴퓨터 언어 에서 의 패 킷 입 니 다. 품사 패 킷 (Lexical Closure) 의 줄 임 말 은 함수 가 자유 변 수 를 인용 할 수 있 고 변수의 생 성 환경 에서 벗 어 날 수 있 습 니 다. 아무리 복잡 한 정의 도 더 이상 설명 할 필요 가 없습니다. 면 대상 안의 구성원 함수 가 구성원 변 수 를 호출 할 수 있다 고 이해 할 수 있 습 니 다.그러나 그 개념 은 대상 을 대상 으로 하 는 개념 보다 훨씬 일찍 유행 하여 약 60 년대 에 Scheme 에서 실현 되 었 다.함수 식 프로 그래 밍 언어 에서 이것 은 매우 흔히 볼 수 있 는 개념 이지 함수 식 언어 에서 js 에 도 폐쇄 적 으로 나타 나 는 모습 이 많다.
정확히 말 하면 Objective - c 에 서 는 폐쇄 (Closure) 가 아니 라 Block 이 라 고 부 르 지만 개념 은 대동소이 하 다.Mac 플랫폼 에 서 는 LLVM 의 지원 이 필요 합 니 다. 어쨌든 새로운 Xcode 는 모두 이 기능 을 지원 합 니 다.자유 변 수 를 사용 하려 면block 키워드 정의, 폐쇄 함수 형식 은 함수 포인터 와 매우 가 깝 습 니 다. 쉽게 말 하면 함수 포인터 의 * 를 ^ 로 바 꾸 면 됩 니 다.
 
 
typedef int (^IntBlock)();
 
IntBlock downCounter(int start)
 
{<br>&nbsp;&nbsp;&nbsp; __block int i = start; return Block_copy( ^int() { return i--; }); <br>}<br><br>
 
IntBlock f = downCounter(5); printf("%d", f()); printf("%d", f()); printf("%d", f()); Block_release(f);

이렇게 간단 해.단순히 문법 적 으로 는 패 키 지 를 닫 는 것 은 말 할 것 도 없 지만 애플 리 케 이 션 이 점점 넓 어 지고 있다. 특히 아이 폰 의 새로운 GCD 특성 상 패 키 지 를 광범 위 하 게 사용 하고 있다. 패 키 지 를 닫 고 어떻게 쓰 는 지 모 르 면 시스템 이 인 터 페 이 스 를 제공 하고 도 호출 할 수 없 는 난감 한 상황 에 빠 질 수 있다.시스템 인터페이스 가 블록 을 사용 해 야 하기 때문에 사용 하지 않 으 면 안 된다 고 생각 할 수 있 습 니 다. 다른 때 는 함수 포인터 로 하면 되 지 않 습 니까? 실제로 자유 변 수 를 사용 하지 않 는 한 다른 때 는 블록 과 함수 포인터 가 다 를 것 이 없 지만 블록 도 자신 만 의 독특한 점 이 있 습 니 다.우선 함 수 를 미리 정의 할 필요 가 없습니다. 함수 포인터 라면 함 수 를 가리 키 고 함 수 를 정의 해 야 합 니 다. 패 킷 을 닫 아야 합 니 다. 그렇지 않 으 면 코드 블록 을 직접 호출 할 수 있 습 니 다. 그 다음 에 함 수 를 미리 정 의 했 더 라 도 함수 이름 을 찾 으 면 ^ 패 킷 을 닫 는 곳 에 직접 사용 할 수 있 습 니 다. 아래로 호 환 되 는 것 으로 이해 할 수 있 습 니 다.예 를 들 어 아이 폰 의 애니메이션 효 과 는 먼저 애니메이션 을 시작 한 다음 에 애니메이션 을 원 하 는 동작 을 써 야 합 니 다. 마지막 으로 제출 해 야 합 니 다. 애니메이션 을 시작 하 는 것 과 제출 하 는 것 사이 의 장벽 이 잘 조 화 롭 지 못 합 니 다. 이에 해당 합 니 다.
[self beginAnimation];
[self animationAction];
[self endAnimation];

또한 모든 애니메이션 은 전문 적 인 animation Action 을 미리 해 야 합 니 다. 아이 폰 의 애니메이션 효 과 는 매우 일반적인 조작 입 니 다. 이 때문에 수많은 불필요 한 함수 가 생 겼 습 니 다. 비록 한 줄 의 hidden 과 같 더 라 도 확장 하기 어렵 고 가방 을 닫 으 면 이런 수요 에 적합 합 니 다.
 + (void)animation:(NSTimeInterval)duration withEvent:(animationEvent)event
{
[UIView beginAnimations:@"animationID" context:nil];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationRepeatAutoreverses:NO];
event();
[UIView commitAnimations];
 
}
 
[Tools animation:0.8 withAnimationCurve:UIViewAnimationCurveEaseInOut withEvent:
^{
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
forView:centerView_ cache:YES];
//
[menuView_ removeFromSuperview];
//
[centerView_ addSubview:phonePad_ ];
}];

좋은 웹페이지 즐겨찾기