SEL其实是对方法的一种包装,将方法包装成一个SEL类型的数据,去找对应的方法地址。找到方法地址就可以调用方法,其实消息就是SEL
1.把test2包装成SEL类型的数据
2.根据SEL数据找到对应的方法地址
3.根据方法地址调用对应的方法
间接调用test2方法
[p performSelector:@selector(test2)];
[p test3:@"123"];
SEL s = @selector(test3:);
[p performSelector:s withObject:@"456"];