Objective-C 잔소리 6.

1542 단어
본고는 고구마 오리지널입니다. 지식 공유를 환영합니다. 전재는 출처를 밝혀 주십시오.네가 출처를 밝히지 않아도 나는 너와 따질 정력이 없다.저자 위챗 번호:christgreenlaw
이 단원에서는 SEL 유형을 다룹니다.

대상/클래스에 맞추어 대상/클래스가 어떤 방법을 실현했는지 검사하다

SEL sel = @selector(setAge:);
Person *p = [Person new];
//  p - setAge: 
BOOL flag = [p respondsToSelector:sel];
NSLog(@"flag = %i", flag);

// respondsToSelector : 
// , - 
// ,  + 
SEL sel1 = @selector(test);
flag = [p respondsToSelector:sel1];
NSLog(@"flag = %i", flag);

flag = [Person respondsToSelector:sel1];
NSLog(@"flag = %i", flag);

responds To Selector, 말하자면 receiver가 어떤 방법에 응답할 수 있는지 없는지를 보는 것이다.

객체/클래스와 함께 SEL 메서드 호출

SEL sel = @selector(demo);
Person *p = [Person new];
//  p sel 
[p performSelector:sel];

SEL sel1 = @selector(signalWithNumber:);
// withObject:  
//  :  performSelector ,  ,  withObject 
[p performSelector:sel1 withObject:@"13838383438"];

SEL sel2 = @selector(setAge:);
[p performSelector:sel2 withObject:@(5)];
NSLog(@"age = %i", p.age);

//  :performSelector 2 
SEL sel3 = @selector(sendMessageWithNumber:andContent:);
[p performSelector:sel3 withObject:@"138383438" withObject:@"abcdefg"];

객체와 함께 SEL 유형을 메소드로 사용하는 참조

Car *c = [Car new];
SEL sel = @selector(run);

Person *p = [Person new];
[p makeObject:c andSel:sel];

Person에서makeObject:andSEL:의 실현
- (void)makeObject:(id)obj andSel:(SEL)sel
{
    [obj performSelector:sel];
}

좋은 웹페이지 즐겨찾기