怎样把SEL放进NSArray里

我的技术博客经常被流氓网站恶意爬取转载。请移步原文:http://www.cnblogs.com/hamhog/p/3805270.html,享受整齐的排版、有效的链接、正确的代码缩进、更好的阅读体验。

有的时候我们会需要把SEL放在NSArray、NSDictionary等集合类型里,比如开新线程执行某函数,传多个参数的时候。但是SEL是不能直接作为NSArray成员的。

可以将它转化为NSString,然后再转化回来。假设SEL名为callback。

转化为NSString:

NSString* string = NSStringFromSelector(callback)

从NSString转化回来:

SEL callback = NSSelectorFromString(string);

一个简单的例子如下:

NSArray* params = [NSArray arrayWithObjects:target, NSStringFromSelector(callback), nil];
SEL callback = NSSelectorFromString(params[1]);

怎样把SEL放进NSArray里

时间: 2024-11-05 13:37:43

怎样把SEL放进NSArray里的相关文章

[杂谈]把大象放进冰箱里!

把大象放进冰箱里! 一 数学家的办法把大象放到冰箱里的分析学方法1)先把大象微分,然后把它放到冰箱里,再在冰箱里把它积分.2)重新定义冰箱或者大象的测度(如Radon测度).3)用Banach-Tarski定理.把大象放到冰箱里的代数学方法1)先证明大象的每一部分都可以放到冰箱里.2)再证明冰箱对加法封闭.把大象放到冰箱里的拓扑学方法1)让大象把冰箱吞了,再把冰箱从里到外翻出来.2)把冰箱做成Klein瓶.把大象放到冰箱里的线性代数方法1)把大象的基先放进去,再在冰箱里张成空间.2)把大象作奇异

数据库连接池中是将connection放进threadlocal里的

我有几点不太明白的,望各位大侠指教下.1.j2ee的应用中,有一个用户请求就会启动一个线程.而如果我们把connection放在Threadlocal里的话,那么我们的程序只需要一个connection连接数据库就行了,每个线程都是用的connection的一个副本,那为什么还有必要要数据库连接池呢?2.在这种情况下一个副本里的connection执行了关闭操作,其他都没执行.那么想问一下真正与数据库连接的connection什么时候关闭呢? 3.显然上面的第一个问题是不成立的,但是希望哪位大侠

hibernate将connection放进threadlocal里实现数据库连接池

Why ThreadLocal? 无论如何,要编写一个多线程安全(Thread-safe)的程序是困难的,为了让线程共享资源,必须小心地对共享资源进行同步,同步带来一定的效能延迟,而另一方面,在处理同步的时候,又要注意对象的锁定与释放,避免产生死结,种种因素都使得编写多线程程序变得困难. 尝试从另一个角度来思考多线程共享资源的问题,既然共享资源这么困难,那么就干脆不要共享,何不为每个线程创造一个资源的复本.将每一个线程存取数据的行为加以隔离,实现的方法就是给予每个线程一个特定空间来保管该线程所独

MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk

经ltib编译器生成rootfs.ext2.gz.uboot它可以直接uboot采用.假设我们编写了相应的外部文件把Ramdisk往里走.您可以创建一个pkg包裹.然后配置编译(,.,).当然这样的方法比較的麻烦.那么有一个更简单的方法,不须要新建一个pkg就能够直接把文件放进Ramdisk里面去. 要把文件放进去有两种方法: 1. 在ltib的安装文件夹新一个名为merge的文件夹.然后把你须要放进去的文件放到该文件夹,系统在生成Ramdisk的时候,会把merge里面的全部内容复制到Ramd

螃蟹放进冰箱冷冻保存前,要注意什么呢?

冷冻螃蟹当然已经不如新鲜的好吃了!但是只要抓住一个小秘诀,就是在冷冻前,先用沸水煮过,放凉,再放进冰箱,等到要烹调时再拿出来料理,肉质会十分鲜美哦! 死螃蟹放冰箱能存放多长时间? 这个问题要区别对待:属于河蟹死了是不能吃的:属于海里的螃蟹只要没有发臭,是可以食用的. 写在最后:通常吃海鲜,海鲜的鲜度很重要,不新鲜的蟹贝类不仅风味差,而且容易引起中毒.所以死的蟹就不要吃了. //======================= 很多朋友深爱螃蟹,于是从外面买回较多螃蟹准备回家享受,问题出现了,买回来

Linux 下EXT2文件系统 —— 如何将蚂蚁和大象优雅的装进冰箱里

这一阵子真是偷懒,无时无刻不和自己身体中的懒癌做斗争.最终我还是被打败了,星期天两天几乎都是荒废过去的,在空闲的时候实际上我内心也是有点焦虑的,不知道去怎么度过这时间.学习吧又不想学习,看电视娱乐吧也没有心情.在这种状态中,我度过了星期天,到了今天我才趴在窗扇看了一会linux.这一部分之前也看过,不过是走马观花式的看,并没有投入精力.今天看了下,发现其实windows的文件系统和linux还是有很多不同的.从设计的角度上,linux的文件系统似乎更加聪明,看完这部分,我也更喜欢linux了.

请将你的App签名文件放进保险箱

这是一篇以我自己的实际经历写的一篇文章. 当下移动开发正值火爆,由于门槛低,任何一个程序员都可以比较容易的进入移动开发领域,作为App或者游戏等移动开发者,当你开发完成一个作品后,准备上线时,需要对你的作品进行签名.涉及到签名,那就少不了软件作者的签名文件.这里,可能不少刚刚进入这一领域的开发者很容易忽略签名文件的重要性,导致没有意识保管自己的签名文件,等应用在市场上线后,需要对应用升级更新时,才发现找不到签名文件或者忘记相关密码,这时为时已晚,会导致麻烦. 这种情况在首次接触签名的开发者中并不

MPC8313ERDB不新建pkg包,把文件放进Ramdisk

通过ltib编译生成的rootfs.ext2.gz.uboot可以直接在uboot使用,如果我们在外部编译生成了相应的文件要放到Ramdisk里面去,可以新建一个pkg包,然后再配置编译生成(这个我没有试过,,,),当然这种方法比较的麻烦,那么有一个更简单的方法,不需要新建一个pkg就可以直接把文件放进Ramdisk里面去. 要把文件放进去有两种方法: 1. 在ltib的安装目录新一个名为merge的文件夹,然后把你需要放进去的文件放到该文件夹,系统在生成Ramdisk的时候,会把merge里面

将dll放进exe[.Net]

原文:将dll放进exe[.Net] 两种方案: 1.使用ILMerge工具. 缺点:需离开工程,使用第三方工具(ILMerge). 2.将dll作为Resource放进exe,exe执行时动态加载(Load)Resources内的dll. 缺点:需编写多余代码,加载速度问题. 参考代码: public partial class App : Application { public App() { AppDomain.CurrentDomain.AssemblyResolve += (send