第二个问题是使用弱引用存在运行时开销.显而易见的成本是创建弱引用和调用get.不太明显的成本是每次GC运行时都需要进行大量的额外工作.
那么弱参考的GC的成本到底是多少?它需要做多少额外的工作,以及它有多大的交易?我可以做一些有根据的猜测,但我对实际的机制很感兴趣.
假设我有一个这样的类:
public class ThingManager {
List<SomeClass> ItemList;
public void AddToList (SomeClass Item)
{
ItemList.Add(Item);
}
public void ProcessListItems()
{
// go through list one item at a time, get item from list,
// modify item according to class' purpose
}
}
Run Code Online (Sandbox Code Playgroud)
假设"SomeClass"是一个相当大的类,包含非常复杂的方法和成员(例如,List <> s和数组),并且可能存在大量的类,因此不会在程序周围复制大量数据重要.
"AddToList"方法中是否应该包含"ref"?为什么?
这就像试图重新学习C中的指针一样;-)(这可能就是为什么我感到困惑,我试图将它们与指针联系起来.在C中它是"SomeClass*Item"和一个列表" SomeClass*"变量"
我的Visual Studio 2010今天早上工作正常(我在Paralles下的XP sP3中运行)我重新启动整个笔记本电脑,我开始收到此错误.我甚至卸载了VS2010,删除了我的文档区域中的Visual Studio 20010目录并重新安装它,每次我尝试启动时它仍然会给我错误.我不确定stackoverflow是否是可以问它的地方,但我在我的智慧结束时试图再次运行(试图避免重建整个Virtual PC)有谁知道如何解决这个问题?
我试图检测特定应用程序何时启动.
目前我正在使用NSWorkspace,注册"确实启动应用程序"通知.我还使用该runningApplications方法来获取应用启动时当前正在运行的应用.
对于大多数应用程序,应用程序包的名称就足够了.我有一个"已知应用程序"的plist,我用通知中传递的名称交叉检查.
这可以正常工作,直到您遇到一个应用程序作为代理,使用命令行参数启动另一个应用程序.
示例:Mac上新发布的Portal没有专用的应用程序包.Steam可以创建一个快捷方式,只需hl2_osx使用-game参数和portal参数启动应用程序即可.
由于更多基于源的游戏正在前往Mac,我想他们将使用相同的方法启动,有效地运行hl2_osx带有-game参数的应用程序.
有没有一种很好的方法来使用Cocoa API获取参数列表(及其参数)?
NSProcessInfo 接近,提供`-arguments'方法,但只为自己的进程提供信息......
NSRunningApplication 提供了使用PID获取任意应用程序信息的能力,但没有命令行参数...
有没有什么能填补两者之间的空白?
我试图不去产生NSTask运行ps -p [pid]和解析输出的路线......我更喜欢更高级别的东西.
我试图使用array_walk_recursive某些东西,并希望使用其中一个类'方法作为回调,所以尝试:
array_walk_recursive($TAINTED, "$this->encode()");
Run Code Online (Sandbox Code Playgroud)
其变化都失败了.我最终安顿下来:
array_walk_recursive($TAINTED, 'className::encode');
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我在这里读到,以这种静态方式调用类方法通常被认为是不好的做法.或者这是必要的情况之一?
那么,这是正确的方法吗,还是有办法放入回调函数而不必依赖它作为静态类方法?
在过去的几个月里,我仍然缓慢但肯定地在 C++ 中跋涉,我遇到了一个我一直想弄清楚的障碍。我试过询问/阅读/搜索,但我永远找不到合适的答案。也许只是因为这个问题有点难问。
我想要做的是在我的程序结束时,让结束序列将输入值与数组中的值进行比较。我必须循环比较序列吗?有没有更简单的方法来解决这个问题?
#include <iostream>
#include <string>
using namespace std;
int main () {
string YesAnswers[5] = {"Y", "YES", "yes" "y"};
string Name;
string YN;
do {
cout << "Enter your name: ";
getline(cin, Name);
cout << "Your name is "<< Name;
cout <<"\nIs this correct? Y\N: ";
cin >> YN;
} while(YN == YesAnswers);
system("Pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Android开发者网站上的"网格视图"示例:
http://developer.android.com/resources/tutorials/views/hello-gridview.html
我想在每张图片下方显示一个小文字标题.
有人可以举例说明如何实现这一目标(即需要编辑的内容)?
谢谢!
将包含对象数据的json转换为附加方法的实际对象的最快捷,最简单的方法是什么?
举例来说,我获得了一个带有一系列水果对象的水果碗的数据,这些水果对象又包含一系列种子,因此:
{"fruitbowl": [{
"name": "apple",
"color": "red",
"seeds": []
},{
"name": "orange",
"color": "orange",
"seeds": [
{"size":"small","density":"hard"},
{"size":"small","density":"soft"}
]}
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但在客户端我们用这种水果做的东西,比如吃它和种植树木......
var fruitbowl = []
function Fruit(name, color, seeds){
this.name = name
this.color = color
this.seeds = seeds
this.eat = function(){
// munch munch
}
}
function Seed(size, density){
this.size = size
this.density = density
this.plant = function(){
// grow grow
}
}
Run Code Online (Sandbox Code Playgroud)
我的ajax的成功例程目前正在循环遍历事物并依次构造每个对象并且它还没有处理种子,因为在我循环遍历种子构造函数之前我正在思考
有没有更好的方法?
success: function(data){
fruitbowl.length = 0
$.each(data.fruitbowl, function(i, f){
fruitbowl.push(new Fruit(f.name, f.color, f.seeds))
})
Run Code Online (Sandbox Code Playgroud)
我没有探索如何循环遍历对象并附加所有方法.那会有用吗?
我刚刚完成了一段复杂的代码.它适用于规范,它符合性能要求等,但我对此感到有点担心,并正在考虑重写和/或重构它.我应该这样做(花费时间,否则可能花在用户实际会注意到的功能上)?
我对代码感到焦虑的原因是:
它们看起来是重构和清理代码,帮助未来维护和扩展的极好理由,但可能非常耗时.此外,我永远不会对我写的任何代码感到非常满意......
那么,stackoverflow会怎么想呢?清理代码或处理功能?
有没有办法从Google Extension获取页面标题的价值?
c# ×2
c++ ×2
javascript ×2
android ×1
cocoa ×1
code-design ×1
html ×1
jquery ×1
objective-c ×1
oop ×1
php ×1
pid ×1
process ×1
refactoring ×1
title ×1