04-Foundation-NSSet、NSDictionary、block
11443 단어 block
1. NSSet 컬렉션
2. NSDictionary 사전
3. Block 코드 블록
정상으로 돌아오다
1. NSSet 컬렉션
1 NSSet은 하나의 객체에 대한 컬렉션 클래스를 관리하는 무질서한 방식으로, 컬렉션에서 중복 객체가 허용되지 않으며 수학적으로 컬렉션의 의미와 동일하다는 것이 가장 큰 특징입니다.무질서를 제외하고 중복해서는 안 되는 다른 기능은 NSArray와 같다.
2 중복이란 무엇인가?
* 동일한 객체
* 두 객체의 정보 값이 동일함
컴퓨터가 생각하는 것과 같은 것은 같은 대상이다
3 객체의 해시 값(hash)
* set에서 객체가 중복되었는지 여부를 결정합니다.예를 들어 A 대상과 B 대상은 먼저 A 대상의hash 방법을 호출하면 하나의 정수를 얻고 B 대상의hash 방법을 호출하면 하나의 정수를 얻는다. 만약에 정수가 같지 않으면 컴퓨터는 두 대상이 서로 다른 대상이라고 여긴다(중복되지 않았다)
*컴퓨터는 같은 대상이 중복된다고 생각하기 때문에 서로 다른 대상의 같은 값은 판단할 수 없다. 모든 우리는hash방법을 다시 써서 안의 값이 같은지 판단해야 한다. 만약hash값이 같으면 대상의isEqual 방법을 다시 호출하여 두 대상이 같은지 다시 판단한다.
1 -(BOOL)isEqual:(id)object{ 2
3 NSLog(@"isEqual "); 4
5 // 6
7 //
8
9 if (self == object) { 10
11 return YES; 12
13 }else if([object isMemberOfClass:[Student class]]){ 14
15 //
16
17 Student* stu2 = object; 18
19 if ([self.name isEqualToString:stu2.name]){ 20
21 return YES; 22
23 }else{ 24
25 return NO; 26
27 } 28
29 }else{ 30
31 return NO; 32
33 } 34
35 }
연습: Point 클래스를 만들고 두 개의 속성 x, y가 있으며 세 개의 대상을 만들어서 NSSet 집합에 넣고point1(3,5)point2(3,6)point3(3,5)은 NSSet 집합을 옮겨다니며 빠른 매거, 교체기를 사용합니다.
연습:학생->학급->학원->학교
8 4 2 1
* 모든 학생 정보 보기
* 이름 표시
* 18세 표시
(NSArray NSMutableArray)
정상으로 돌아오다
2. NSDictionary 사전
NSMutable Dictionary 가변 사전
1은 키. - 값 대 조합의 집합.
2 키를 통해 해당하는value를 찾습니다. 일반적으로 키의 값은 문자열 형식이고value의 값은 임의의 대상 형식입니다.
3 키의 값은 중복을 허용하지 않습니다.value의 값은 중복할 수 있습니다
4 통상적으로 키의 값과value의 값은 비워둘 수 없습니다
5 여러 데이터 저장 가능
1 //
2 NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3", nil];//1 2 3 4 ...
3 NSLog(@"%@",dic); 4
5 NSMutableDictionary* dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3", nil];//1 2 3 4 ... 6 //
7 [dic2 setValue:@"v4" forKey:@"k4"]; 8 NSLog(@"%@",dic2); 9 //
10 NSString* value = [dic2 objectForKey:@"k1"]; 11 NSLog(@"key:%@->value:%@",@"k1",value); 12 // 13 // key
14 NSArray* keys = [dic2 allKeys]; 15 // key
16 NSArray* newKeys = [keys sortedArrayUsingSelector:@selector(compare:)]; 17 for (NSString* k in newKeys) { 18 NSLog(@"%@->%@",k,[dic2 objectForKey:k]); 19 }
정상으로 돌아오다
3. Block 코드 블록
1 Block은 코드를 봉하여 언제든지 실행할 수 있습니다. Block은 함수 매개 변수나 함수의 반환값으로 할 수 있고 그 자체는 입력 매개 변수나 반환값을 가져올 수 있습니다. 이것은 전통적인 함수 바늘과 유사합니다.
함수와 Block의 차이점:
1 Block은 OC의 문법입니다.
2 Block의 정의는 함수에 쓸 수 있습니다
3 사용이 보다 직관적이고 결합도가 낮음
4 직접 성명 여부
1 //
2 NSArray* array2 = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2){ 3 NSString* s1 = obj1; 4 NSString* s2 = obj2; 5 return [s1 compare:s2]; 6 }]; 7 NSLog(@"%@",array2);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
3. CSS 기본 프로퍼티프로퍼티 프로퍼티 값으로 테두리 두께 지정 가능 width/height 프로퍼티 max-width/max-height 프로퍼티 margin/padding 프로퍼티 margin 또는 padding 프로퍼티에 윗쪽, 오...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.