程序设计

专业和发烧友程序员的问答

1
自定义dealloc和ARC(Objective-C)
在我的小iPad应用程序中,我具有使用观察者的“切换语言”功能。每个视图控制器在其运行期间向我的观察者注册viewDidLoad:。 - (void)viewDidLoad { [super viewDidLoad]; [observer registerObject:self]; } 当用户单击“更改语言”按钮时,新语言将存储在我的模型中,并通知观察者并调用updateUi:其已注册对象上的选择器。 这非常有效,除了在TabBarController中具有视图控制器时。这是因为在加载选项卡栏时,它会从其子控制器中获取选项卡图标,而无需初始化视图,因此viewDidLoad:不会调用它,因此这些视图控制器不会收到语言更改通知。因此,我将registerObject:调用移到了init方法中。 回到我以前viewDidLoad:向观察员注册时,我曾经viewDidUnload:注销过。由于我现在正在注册init,因此取消注册非常有道理dealloc。 但是,这是我的问题。当我写: - (void) dealloc { [observer unregisterObject:self]; [super dealloc]; } 我收到此错误: ARC禁止显式发送消息“ dealloc” 由于我需要致电[super dealloc]以确保正确清理超类,但是ARC禁止这样做,所以我现在陷入困境。当我的物体快要死时,还有另一种方法来通知我吗?

6
如何在Makefile目标中使用Bash语法?
我经常发现Bash语法非常有用,例如像中的流程替换diff <(sort file1) <(sort file2)。 是否可以在Makefile中使用这样的Bash命令?我在想这样的事情: file-differences: diff <(sort file1) <(sort file2) > $@ 在我的GNU Make 3.80中,这将产生错误,因为它使用shell而不是bash执行命令。
208 bash  shell  makefile 

4
如何创建退出消息
是否有一个单行函数调用退出程序并显示一条消息?我知道在Perl中它很简单: die("Message goes here") 我厌倦了这样输入: puts "Message goes here" exit
208 ruby 

15
语言如何自我扩展?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 我正在学习C ++,并且刚刚开始学习Qt的一些功能来编写GUI程序。我问自己以下问题: 以前没有语法能够向操作系统询问窗口或通过网络进行通信的方法(我承认我也不完全理解的API)的C ++突然如何通过用C ++自己编写的库获得这种功能?对我来说,一切似乎都是圆圆的。您可能在这些库中提出了哪些C ++指令? 我意识到对于一个经验丰富的软件开发人员来说,这个问题似乎微不足道,但是我已经进行了数小时的研究,没有找到任何直接的答案。到了我无法理解有关Qt的教程的地步,因为库的存在对我来说是不可理解的。

15
本地化和国际化有什么区别?
我要问一个有关准备桌面应用程序以支持UI上多种语言的问题。 在搜索有关该主题的现有问题时,我想到的是“国际”一词,因此我选择了国际化标签并通读了一些匹配的问题。 最终,我意识到我应该去找标记为Localization的问题。但是,似乎我并不孤单地把这两个词混在一起。 那么,本地化和国际化之间的主要区别是什么? 另外,两者之间的明显区别真的那么重要吗?

20
从版本12升级后,为什么IntelliJ 13 IDEA这么慢?
在使用IntelliJ 13 Ultimate Edition一周的过程中,它似乎真的很慢。 首先,整个IDE偶尔会停一秒钟左右。与12版本相比,Java编辑器的自动完成速度确实很慢。 除了使用Dracula主题外,我没有更改任何默认设置。 看来这不是我自己的问题。许多人建议将堆大小设置为大于默认值,或者清除缓存,但是我没有对这些建议进行检查或测试。我是否需要更改某些设置以改善新版本的性能?

7
Java标识符中的“连接字符”是什么?
我正在阅读SCJP,对此行有疑问: 标识符必须以字母,货币字符($)或下划线(_)之类的连接字符开头。标识符不能以数字开头! 它指出有效的标识符名称可以以下划线之类的连接字符开头。我以为下划线是唯一有效的选择?还有哪些其他连接字符?
208 java  unicode  identifier  scjp 


14
如何从Mac OS X卸载MySQL?
我无意中在Snow Leopard的Intel Mac上安装了MySQL的PowerPC版本,并且没有问题,但是当然不能正常运行。我只是没有给予足够的重视。现在,当我尝试安装正确的x86版本时,它说无法安装,因为已经安装了较新的版本。Google查询使我执行以下操作/删除这些文件以将其卸载: sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm -rf /Library/StartupItems/MySQLCOM sudo rm -rf /Library/PreferencePanes/MySQL* rm -rf ~/Library/PreferencePanes/MySQL* sudo rm -rf /Library/Receipts/mysql* sudo rm -rf /Library/Receipts/MySQL* 最后从中删除行MYSQLCOM = -YES- /etc/hostconfig 他们似乎根本没有帮助。我仍然收到有关存在较新版本的相同消息。我尝试安装一个甚至更高的版本(当前的Beta),它也给我同样的消息,说明已经安装了一个更高的版本。我无法从Prefs窗格中卸载它,因为我也从未安装过PrefPane。

3
基于原型与基于类的继承
在JavaScript中,每个对象同时是一个实例和一个类。要进行继承,可以将任何对象实例用作原型。 在Python,C ++等中。有类和实例作为单独的概念。为了进行继承,您必须使用基类创建一个新类,然后该新类可用于生成派生实例。 为什么JavaScript朝这个方向发展(基于原型的面向对象)?与传统的基于类的OO相比,基于原型的OO有哪些优点和缺点?

9
查找未使用的代码[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 改善这个问题 我必须重构一个大型的C#应用​​程序,并且发现了很多从未使用过的功能。如何检查未使用的代码,以便删除所有未使用的功能?
208 c#  .net  refactoring 

22
为什么C#不提供C ++样式的“ friend”关键字?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 改善这个问题 在C ++朋友关键字允许class A指定class B作为其朋友。这允许Class B访问的private/ protected成员class A。 我从来没有读过任何关于为什么C#(和VB.NET)不包含此内容的信息。对于这个较早的StackOverflow问题的大多数答案似乎都是在说它是C ++的有用组成部分,并且有充分的理由使用它。以我的经验,我必须同意。 在我看来,另一个问题确实是在问如何friend在C#应用程序中执行类似的操作。尽管答案通常围绕嵌套类,但似乎并不像使用friend关键字那样优雅。 原始的《设计模式》一书在整个示例中都定期使用它。 因此,总而言之,为什么friendC#缺少它?在C#中模拟它的“最佳实践”方法是什么? (顺便说一句,internal关键字不是同一回事,它允许整个程序集中的所有类访问internal成员,而friend允许您为某个类提供对另一个类的完全访问权限)
208 c#  c++  design-patterns  oop  friend 

9
Gzip的JavaScript实现
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 改善这个问题 我正在编写一个Web应用程序,该应用程序需要通过AJAX将JSON数据存储在固定大小的小型服务器端缓存中(请考虑:Opensocial配额)。我无法控制服务器。 我需要减小存储数据的大小,以保持在服务器端配额之内,并希望能够在将字符串化的JSON发送到服务器之前在浏览器中gzip化该字符串化的JSON。 但是,我找不到Gzip的JavaScript实现方式。关于如何在发送之前在客户端上压缩数据的任何建议?


2
为什么我的球(物体)没有收缩/消失?
http://jsfiddle.net/goldrunt/jGL84/42/ 这是来自JS小提琴的第84行。通过取消注释线141-146,可以将3种不同的效果应用于球。“弹跳”效果按其应有的方式起作用,但“ asplode”效果却不起作用。我应该在asplode函数中包括“缩小”函数吗? // balls shrink and disappear if they touch var shrink = function(p) { for (var i = 0; i < 100; i++) { p.radius -= 1; } function asplode(p) { setInterval(shrink(p),100); balls.splice(p, 1); } }
208 javascript  html 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.