我知道标题听起来很熟悉,因为有很多类似的问题,但我要问问题的不同方面(我知道在堆栈上放置东西并将它们放在堆上之间的区别).
在Java中,我总是可以返回对"本地"对象的引用
public Thing calculateThing() {
Thing thing = new Thing();
// do calculations and modify thing
return thing;
}
Run Code Online (Sandbox Code Playgroud)
在C++中,要做类似的事情,我有2个选项
(1)每当我需要"返回"一个对象时,我都可以使用引用
void calculateThing(Thing& thing) {
// do calculations and modify thing
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它
Thing thing;
calculateThing(thing);
Run Code Online (Sandbox Code Playgroud)
(2)或者我可以返回指向动态分配对象的指针
Thing* calculateThing() {
Thing* thing(new Thing());
// do calculations and modify thing
return thing;
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它
Thing* thing = calculateThing();
delete thing;
Run Code Online (Sandbox Code Playgroud)
使用第一种方法我不必手动释放内存,但对我而言,它使代码难以阅读.第二种方法的问题是,我必须记住delete thing;,这看起来不太好.我不想返回复制的值,因为它效率低(我认为),所以这里提出问题
任何人都可以给我示例代码,我可以用来首先提出一个模态视图控制器,然后解雇它?这就是我一直在尝试的:
NSLog(@"%@", blue.modalViewController);
[blue presentModalViewController:red animated:YES];
NSLog(@"%@", blue.modalViewController);
[blue dismissModalViewControllerAnimated:YES];
NSLog(@"%@", blue.modalViewController);
此代码位于viewDidLoad中("blue"和"red"都是UIViewController的子类).我希望我会显示红色视图然后立即隐藏它,并带有一些动画.但是这段代码只提供了模态视图,并没有忽略它.任何的想法?第一个日志显示"null",而另外两个日志显示<RedViewController:0x3d21bf0> 如何以编程方式将焦点分配给视图中的特定UITextField?我有几个字段,在视图显示上,我想将光标放在特定字段上,而不是顶部的第一个字段.
从程序员的角度来看,shell脚本只是另一种编程语言,人们必须学习并遵守语言规则.但是,我必须承认,这种语法是我在一种常用语言中见过的最奇怪的风格.shell是否采用了它来自的较旧语言的语法?语法中是否有特殊含义/含义?
作为一个例子,这里是我从SO上的另一篇文章中获取的一个小片段
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
check_status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
Run Code Online (Sandbox Code Playgroud)
看看这个,首先我可以看到case结束esac,这是它的反转形式(如if结束fi).其次,我理解每个案例后面跟着一个).很公平,但为什么我;在每个声明的末尾都需要两个呢?我还会说)没有伴随的(是丑陋的.
我正在寻找有关语言历史方面的更多信息,但我也是出于技术原因而开放.
我有一个JScrollPane与FlowLayout我希望有一个固定的宽度.它应该只是垂直滚动,当我调整窗口大小时应该自动重新排列内容.我认为应该有一种方法,setEnableHorizontalScroll(false)但找不到它.
有没有简单的方法来做到这一点?
这是一个想象中的问题,但我遇到了补丁的真正问题.假设我有一个包含以下git历史的项目:
A - B - C
Run Code Online (Sandbox Code Playgroud)
现在,如果我收到两个补丁,C1并且C2应该应用C它们,我应该如何处理它们?如果我先应用补丁C1,那么我将无法应用补丁,C2因为存储库已成为:
A - B - C - C1
Run Code Online (Sandbox Code Playgroud)
是否可以同时应用它们,或者我是否必须回复发送C2的人告诉他/她更新补丁?
现在假设我离线并工作和提交,以便存储库变为:
A - B - C - D - E
Run Code Online (Sandbox Code Playgroud)
然后我查看我的电子邮件并收到补丁C.再次,是否可以简单地应用该补丁,或者我是否需要更新补丁?
大家好,我正在寻找一种使用DOM解析XML文档的方法.我一直在使用SAX与NSXMLParser,但现在我真的想要一个DOM树(或任何可以快速将XML文档转换为NSDictionary的东西)
感谢您的帮助
这是一个相当简单的案例.我有一个链接到xsl样式表的xml文档,可以在Web浏览器中查看.既然输出并不是我所期望的,那么我想查看(输出)html代码以查看发生了什么.但是,当我说"查看源代码"时,浏览器只会向我发送原始的xml文件.
请告诉我如何查看html源代码:)
更新
其实我可以用浏览器查看它(右击并说"检查元素"),但这是有点依赖于浏览器.另外,我不想为这个小礼物安装任何东西.是否有任何通用解决方案(即适用于所有(或大多数)浏览器的东西)?
我有这样的C++文件
#ifndef _MOVE_H
#define _MOVE_H
class Move {
int x, y;
public:
Move(int initX = 0, int initY = 0) : x(initX), y(initY) {}
int getX() { return x; }
void setX(int newX) { x = newX; }
int getY() { return y; }
void setY(int newY) { y = newY; }
};
#endif
Run Code Online (Sandbox Code Playgroud)
很让我惊讶,所有的代码#ifndef,并#endif简单地由编译器(我发誓,我没有界定忽视_MOVE_H其他地方),我有失踪定义的各种错误.我在想我做错了什么,但是当我尝试使用另一个键时(比如_MOVE_Ha,一切都恢复正常.这是否_MOVE_H意味着C++中的一些特殊内容?
我正在运行Ubuntu 10.04,GCC 4.4.3,如果这很重要的话.
谢谢,
我有一个表格视图,我想在每个单元格的右侧放置一个标签,所以- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath我有一些像这样的代码
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.titleLabel.text = @"title";
cell.accessoryView = button;
Run Code Online (Sandbox Code Playgroud)
但是,该按钮根本不显示.谁知道为什么?我确信声明是正确的,因为如果我用.替换按钮声明
UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
Run Code Online (Sandbox Code Playgroud)
然后按钮出现,这让我觉得圆角矩形也应该出现.
iphone ×3
objective-c ×3
c++ ×2
xml ×2
bash ×1
browser ×1
case ×1
debugging ×1
dom ×1
git ×1
html ×1
ios ×1
java ×1
jscrollpane ×1
modal-view ×1
patch ×1
performance ×1
reference ×1
return ×1
shell ×1
swing ×1
textinput ×1
uitableview ×1
xslt ×1
zsh ×1