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);

좋은 웹페이지 즐겨찾기