아이 폰 패키지 적용
4406 단어 iPhone
정확히 말 하면 Objective - c 에 서 는 폐쇄 (Closure) 가 아니 라 Block 이 라 고 부 르 지만 개념 은 대동소이 하 다.Mac 플랫폼 에 서 는 LLVM 의 지원 이 필요 합 니 다. 어쨌든 새로운 Xcode 는 모두 이 기능 을 지원 합 니 다.자유 변 수 를 사용 하려 면block 키워드 정의, 폐쇄 함수 형식 은 함수 포인터 와 매우 가 깝 습 니 다. 쉽게 말 하면 함수 포인터 의 * 를 ^ 로 바 꾸 면 됩 니 다.
typedef int (^IntBlock)();
IntBlock downCounter(int start)
{<br> __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:(NSTimeInterva l)duration withEvent:(animationEvent)even t
{
[UIView beginAnimations:@"animationID" context:nil];
[UIView setAnimationDuration:duration] ;
[UIView setAnimationCurve:UIViewAnimat ionCurveLinear];
[UIView setAnimationRepeatAutoreverses :NO];
event();
[UIView commitAnimations];
}
[Tools animation:0.8 withAnimationCurve:UIViewAnima tionCurveEaseInOut withEvent:
^{
[UIView setAnimationTransition:UIViewA nimationTransitionFlipFromRigh t
forView:centerView_ cache:YES];
//
[menuView_ removeFromSuperview];
//
[centerView_ addSubview:phonePad_ ];
}];
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IOS Application core architectureA new IOS application program is mainly composed of the following files: If the app delegate class is nil, UIKit will as...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.