iOS 블록에 완전히 새로운 기능입니다. 나는 ios에있는 인라인 블록에 대한 책을 읽었습니다. 인라인 블록이란 정확히 무엇입니까? 우리는 그것을 어떤 물건과 함께 사용할 수 있습니까? 정상 및 인라인 블록의 차이점은 무엇입니까? iOS의 인라인 블록
이
는 재사용없는 내가 인라인 블록 대신 블록은 위의 예에서와 같이, 인라인 정의NSArray* arr2 = [arr sortedArrayUsingComparator: ^(id obj1, id obj2) {
NSString* s1 = obj1;
NSString* s2 = obj2;
NSString* string1end = [s1 substringFromIndex:[s1 length] - 1];
NSString* string2end = [s2 substringFromIndex:[s2 length] - 1];
return [string1end compare:string2end];
}];
콜백 함수를 사용하여 책
에 보았던이고; ArrayUsingComparator : 동일한 콜백을 사용하여 콜백을 두 번 완전히 작성해야합니다. 이러한 반복을 피하기 위해 또는 간단히하기 위해 블록을 변수에 할당 할 수 있습니다.이 변수는 아래 예에서와 같이 블록을 예상하는 메소드에 인수로 전달됩니다. 변수 블록 할당
NSComparisonResult (^sortByLastCharacter)(id, id) = ^(id obj1, id obj2) {
NSString* s1 = obj1;
NSString* s2 = obj2;
NSString* string1end = [s1 substringFromIndex:[s1 length] - 1];
NSString* string2end = [s2 substringFromIndex:[s2 length] - 1];
return [string1end compare:string2end];
};
있는 NSArray * arr2 = sortedArrayUsingComparator 도착 : sortByLastCharacter]; NSArray * arr4 = [arr3 sortedArrayUsingComparator : sortByLastCharacter]; 아마도 블록의 가장 주목할만한 기능은 다음과 같습니다. 블록이 정의 된 지점의 범위에있는 변수는 나중에 블록을 실행할 수 있지만 그 순간 블록 내에서 값을 유지합니다. (기술적으로, 우리는 블록이 클로저라고 말하고, 블록 외부의 변수 값은 블록에 의해 캡쳐 될 수 있습니다.) 블록의이 측면은 나중에 어떤 시점에 또는 심지어 다른 곳에서 실행될 기능을 지정하는 데 유용합니다 실. 아마 당신이 직접 블록 인수 대신에 블록의 정의를 배치 할 수 있음을 의미
그 책은 뭐라고 말 했나요? 너 이해하지 못 했어? 책에 예를 보여주지 않았습니까? – Wain