什么是解决Objective-C命名空间碰撞的最好方法?

Objective-C没有名称空间; 这很像C,一切都在一个全局的命名空间。 通常的做法是用类名前缀加前缀,例如,如果你在IBM工作,你可以用“IBM”作为前缀。 如果你在微软工作,你可以使用“MS”; 等等。 有时候,首字母缩写是指项目,例如Adium在“AI”前加上类(因为没有任何公司可以采用这个缩写)。 苹果公司前缀与NS的类,并说这个前缀是只保留给苹果。 到目前为止这么好。 但是将2到4个字母附加到前面的类名是一个非常非常有限的名称空间。 例如,MS或AI可能具有完全不同的含义(例如,AI可能是人工智能),而其他开发人员可能会决定使用它们并创build一个同名的类。 砰 ,命名空间相撞。 好吧,如果这是你自己的类和你正在使用的外部框架之间的碰撞,你可以很容易地改变你的类的命名,没有什么大不了的。 但是,如果使用两个外部框架,那么这两个框架都没有源代码,而且不能更改? 您的应用程序与他们两个链接,你会得到名称冲突。 你将如何去解决这些问题? 什么是最好的方式来解决他们的方式,你仍然可以使用这两个类? 在C中,可以通过不直接链接到库来解决这些问题,而是使用dlopen()在运行时加载库,然后使用dlsym()查找要查找的符号并将其分配给全局符号可以用你喜欢的任何方式命名),然后通过这个全局符号来访问它。 例如,如果因为某个C库有一个名为open()的函数而发生冲突,则可以定义一个名为myOpen的variables,并指向该库的open()函数,因此,如果要使用系统open() ,你只需要使用open(),当你想使用另一个时,你可以通过myOpen标识符来访问它。 在Objective-C中有类似的可能性,如果不是的话,还有没有其他聪明的,棘手的解决scheme,你可以使用解决命名空间冲突? 有任何想法吗? 更新: 为了澄清这个问题:如何避免命名空间冲突或如何创build一个更好的命名空间的答案当然是受欢迎的; 然而,我不会接受他们作为答案,因为他们不能解决我的问题。 我有两个图书馆,他们的class名相撞。 我不能改变他们; 我没有任何一个的来源。 碰撞已经在那里,如何提前避免的提示将无济于事。 我可以将它们转发给这些框架的开发人员,并希望他们将来能够select一个更好的名称空间,但是目前我正在寻找一种解决scheme,在单个应用程序中使用框架。 任何解决scheme,使这成为可能?

如何使圆angular布局..?

我怎样才能做出圆angular的布局? 我想要应用我的LinearLayout圆angular。

什么是最简单的方法来禁用/启用button和链接(jQuery + Bootstrap)

有时候我会使用button的forms,有时我只是使用button。 我想禁用特定的clicky事物,以便: 他们看起来残疾 他们停止点击 我该怎么做?

使用for循环遍历目录中的所有文件

如何使用for循环迭代目录中的每个文件? 我怎么能告诉如果某个条目是一个目录,或者如果它只是一个文件?

如何在运行时find方法的定义?

我们最近遇到了一系列提交后发生后端进程失败的问题。 现在,我们都是优秀的小男孩和女孩,每次办理登机手续后都会进行rake test ,但是由于Rails图书馆的装载有些怪异,我们只能在生产模式下直接从Mongrel上运行。 我跟踪了这​​个bug,这是由于Rails的一个新的gem在一个String类中覆盖了一个方法,这个方法在运行时Rails代码中的一个狭隘的用法。 无论如何,长话短说,在运行时有没有办法问Ruby在哪里定义了一个方法? 像whereami( :foo ) ,返回/path/to/some/file.rb line #45 ? 在这种情况下,告诉我它是在String类中定义的将是无益的,因为它被一些库重载。 我不能保证源码存在于我的项目中,所以对于'def foo'并不一定会给我所需要的东西,更不用说我有很多 def foo的东西了,有时候我只是在运行时才知道哪一个是我的可能正在使用。

使用ffmpeg连接两个mp4文件

我试图使用ffmpeg连接两个mp4文件。 我需要这是一个自动过程,因此我select了ffmpeg。 我将这两个文件转换成.ts文件,然后将它们连接起来,然后尝试对该连接的.ts文件进行编码。 这些文件是h264和aac编码,我希望保持质量相同或尽可能接近原始。 ffmpeg -i part1.mp4 -vcodec copy -vbsf h264_mp4toannexb -acodec copy part1.ts ffmpeg -i part2.mp4 -vcodec copy -vbsf h264_mp4toannexb -acodec copy part2.ts cat part1.ts part2.ts > parts.ts ffmpeg -y -i parts.ts -acodec copy -ar 44100 -ab 96k -coder ac -vbsf h264_mp4toannexb parts.mp4 不幸的是我在编码过程中从ffmpeg得到下面的错误信息: [h264 @ 0x1012600]sps_id out of range [h264 @ 0x1012600]non-existing SPS […]

使div始终停留在页面内容的底部,即使有滚动条也是如此

CSS推Div到页面底部 请看这个链接,我想要的是相反的:当内容溢出到滚动条,我希望我的页脚总是在整个页面的底部,如堆栈溢出。 我有一个id="footer"的div和这个CSS: #footer { position: absolute; bottom: 30px; width: 100%; } 但是它所做的只是到视口的底部,即使向下滚动,也停留在那里,所以它不再处于底部。 图片: 对不起,如果没有澄清,我不希望它是固定的,只是为了在所有的内容的实际底部。

Android:要为整个应用程序设置自定义字体,而不是运行时

是否可以在应用程序的每个控件中设置任何自定义字体? 而不一定是运行时? (即如果可能的话从xml或者只在JAVA文件中的整个应用程序一次) 我可以从这个代码设置一个控件的字体。 public static void setFont(TextView textView) { Typeface tf = Typeface.createFromAsset(textView.getContext() .getAssets(), "fonts/BPreplay.otf"); textView.setTypeface(tf); } 而这个代码的问题是应该为每个控件调用。 我想调用这个或任何类似的方法一次,或者如果可能的话在xml中设置属性。 可能吗?

如何摆脱从GCCstring常量到'char *'警告的弃用转换?

所以我在一个非常大的代码库上工作,最近升级到gcc 4.3,现在触发这个警告: 警告:不推荐将string常量转换为“char *” 显然,解决这个问题的正确方法是find每个声明 char *s = "constant string"; 或函数调用如: void foo(char *s); foo("constant string"); 并使他们const char指针。 但是,这意味着至less要触及564个文件,这不是我希望在这个时候执行的任务。 现在的问题是,我正在运行-werror ,所以我需要一些方法来扼杀这些警告。 我怎样才能做到这一点?

C ++性能挑战:整数转换为std :: string

任何人都可以打败我的整数的性能std ::string代码,下面链接? 已经有几个问题解释了如何在C ++中将整数转换为std::string ,比如这个 ,但是没有一个提供的解决scheme是有效的。 下面是一些编译就绪的代码,用于与一些常见的方法进行竞争: 使用stringstream的“C ++方法”: http : //ideone.com/jh3Sa sprintf,这是SO-ers通常推荐的性能意识: http : //ideone.com/82kwR 与stream行的观点相反, boost::lexical_cast有它自己的实现( 白皮书 ),不使用stringstream和numeric插入操作符。 我真的很希望看到它的performance比较,因为这个问题表明它是悲惨的 。 和我自己的贡献一样,这在台式计算机上是有竞争力的,并且演示了一种在embedded式系统上也可以全速运行的方法,与依赖于整数模的algorithm不同: 本的algorithm: http : //ideone.com/SsEUW 如果你想使用这个代码,我会在一个简单的BSD许可下使用它(允许商业使用,需要归属)。 请问。 最后,函数ltoa是非标准的,但广泛可用。 ltoa版本,对于任何有编译器的人来说(ideone没有): http ://ideone.com/T5Wim 我会尽快发表我的performance测量作为答案。 algorithm规则 提供将至less32位有符号和无符号整数转换为十进制的代码。 将输出生成为std::string 。 没有与线程和信号不兼容的技巧(例如,静态缓冲区)。 您可以假设一个ASCII字符集。 确保在绝对值无法表示的二进制补码机上testingINT_MIN上的代码。 理想情况下,输出应该是character-for-character与使用stringstream的规范C ++版本相同的,但是也可以通过http://ideone.com/jh3Sa来理解,因为正确的数字也是可以理解的。 新 :虽然你可以使用任何编译器和优化器的选项(除了完全禁用),你需要进行比较,至less在VC ++ 2010和g ++下,代码也需要编译并给出正确的结果。 希望讨论 除了更好的algorithm之外,我还想在几个不同的平台和编译器上获得一些基准(让我们使用MB / s吞吐量作为我们的标准测量单位)。 我相信我的algorithm的代码(我知道sprintf基准testing使用了一些快捷方式 – 现在已经修复了)是标准定义好的行为,至less在ASCII假设下是这样,但是如果您看到任何未定义的行为或input输出无效,请指出。 […]