所以这是我的一个课程的摘录:
[ThreadStatic]
readonly static private AccountManager _instance = new AccountManager();
private AccountManager()
{
}
static public AccountManager Instance
{
get { return _instance; }
}
Run Code Online (Sandbox Code Playgroud)
如您所见,它是一个单线程每线程 - 即实例标有ThreadStatic属性.该实例也被实例化为静态构造的一部分.
既然如此,当我尝试使用Instance属性时,我的ASP.NET MVC应用程序中是否有可能出现NullReferenceException?
由于NavigationController,我有一个推入的ViewController(带有MKMapView).所以我有一个带有"后退"按钮的NavBar.单击该后退按钮,我收到一个错误:
2010-01-11 18:05:35.273 TestApp [147:207]正在释放类MKUserLocation的实例0x1758f0,而键值观察者仍然在其中注册.观察信息被泄露,甚至可能被错误地附加到其他物体上.在NSKVODeallocateBreak上设置断点以在调试器中停止.这是当前的观察信息:(上下文:0x0,属性:0x17d600>)程序接收信号:"EXC_BAD_ACCESS".
我有一个使用Observer实现的viewDidLoad方法:
- (void)viewDidLoad {
mapView = (MKMapView*)self.view;
mapView.delegate = self;
mapView.mapType = MKMapTypeHybrid;
mapView.showsUserLocation = YES;
// ...
[mapView.userLocation addObserver:self forKeyPath:@"location" options:0 context:NULL];
[super viewDidLoad];
Run Code Online (Sandbox Code Playgroud)
}
我的dealloc:
- (void)dealloc {
[groupId release];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这里有什么问题?我单击NavBar中的后退按钮然后我进入dealloc方法,然后它切换回更高的ViewController并抛出此错误.
非常感谢提前和最诚挚的问候.
iphone key-value-observing uinavigationcontroller observer-pattern
我很抱歉提出这类问题,但我真的找不到谷歌的答案.所以说我有一个课,private String myColor我有一个字符串"myColor".现在我想操纵myColor属性.我怎样才能做到这一点?
编辑:
抱歉一个不明确的问题,我想最好的方法是解释我需要它.我有一个Swing表单,并希望在加载gui时使用首选项api来设置字段的值.所以我可以读取所有字段然后outputDirectoryTextField.setText(valueFromPrefsAPI);为每个字段做,但这似乎是一些不需要的编码所以我想有一个数组(哈希?)与字段的名称和循环通过它们,如下所示:
String[] myTextInputs = {"thisInput", "thatInput"};
for (String inputName : myTextInputs) {
String value = prefs.get(inputName, "");
/* some code I'm seeking to find out*/.setText(value);
}
Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以将类的静态属性用作对象定义的工厂方法?
<object id="MyObject" type="MyNamespace.Factory, MyAssembly" factory-method="FactoryObject" />
<!-- "FactoryObject" is a Property (with getter) of the class "Factory" -->
Run Code Online (Sandbox Code Playgroud)
使用此配置会引发异常:
创建上下文'spring.root'时出错:类型[MyNamespace.Factory]上找不到匹配的工厂方法'FactoryObject
我很好奇C++中不同的常量声明和定义选项的好处/坏处.在最长的时间内,我刚刚在类定义之前将它们声明为头文件的顶部:
//.h
const int MyConst = 10;
const string MyStrConst = "String";
class MyClass {
...
};
Run Code Online (Sandbox Code Playgroud)
虽然这污染了全局命名空间(我知道这是一件坏事,但从来没有找到一个清单,说明为什么它不好),常量仍将限定在各个翻译单元,因此不包含此标题的文件将无法访问这些常量.但是如果其他类定义了一个同名的常量,你就可以获得名称冲突,这可能是一件坏事,因为它可能是一个可以重构的区域的良好指示.
最近,我决定在类定义本身内部声明类特定常量会更好:
//.h
class MyClass {
public:
static const int MyConst = 10;
...
private:
static const string MyStrConst;
...
};
//.cpp
const string MyClass::MyStrConst = "String";
Run Code Online (Sandbox Code Playgroud)
常量的可见性将根据常量是仅在类的内部使用还是使用该类的其他对象所需来调整.这就是我现在认为是最好的选择,主要是因为你可以将内部类常量保持为类的私有,而使用公共常量的任何其他类都可以更详细地引用常量的来源(例如MyClass: :MYCONST).它也不会污染全局命名空间.虽然它确实不利于在cpp文件中要求非整数初始化.
我还考虑将常量移动到它们自己的头文件中并将它们包装在命名空间中,以防其他类需要常量,而不是整个类定义.
只是寻找意见和可能还有其他选择我尚未考虑过.
我在页面上有一个链接,我想将一个变量发送到这样的php文件:
href = "php_file.php?qry=$query"
Run Code Online (Sandbox Code Playgroud)
$ query变量包含一个查询,我想在php文件中对mysql进行查询.
我的问题是,我不希望用户"看到"我传递的内容.我想使用$ _POST,但据我所知,这是不可能的.
还有其他简单的方法吗?
谢谢
我想对主题"版本控制"有你的看法,但关注安全性.
一些常见的功能:
允许仅使用客户端访问源代码 (无法直接访问服务器上的源代码)
授予只允许访问我允许修改的源代码的权限(即:开发人员应该只能访问与其项目相关的源代码).因此,应该可以创建用户组并授予不同级别的访问权限.
跟踪修改,签到和签出以及制作它们的开发人员......
......当然,我忘了什么.
您知道哪些是最"偏执"的版本控制系统?他们实现了哪些功能?
我的目标是创建一个环境来开发管理敏感数据的应用程序:信用卡,密码等......恶意开发人员可能会插入后门或故意改变某些安全功能.因此,应严格控制对源代码的访问.我必须承认我对版本控制系统的了解很差,所以,我担心,定制SVN对我来说可能是一项艰巨的任务.
谢谢
我正在与一个奇怪的,至少对我来说,重载.net的分辨率方法摔跤.我写了一个小样本来重现这个问题:
class Program
{
static void Main(string[] args)
{
var test = new OverloadTest();
test.Execute(0);
test.Execute(1);
Console.ReadLine();
}
}
public class OverloadTest
{
public void Execute(object value)
{
Console.WriteLine("object overload: {0}", value);
}
public void Execute(MyEnum value)
{
Console.WriteLine("enum overload: {0}", value);
}
}
public enum MyEnum
{
First = 1, Second = 2, Third = 3
}
Run Code Online (Sandbox Code Playgroud)
将打印:
enum overload: 0
object overload: 1
Run Code Online (Sandbox Code Playgroud)
基本上,调用的重载因值(0,1)而不是给定的数据类型而不同.
有人能解释一下吗
更新
我应该指出C#2和C#3之间存在不同的行为
Do((long)0) => object overload //C# 2
Do((long)0) => enum overload //C# …Run Code Online (Sandbox Code Playgroud) 我的RoR服务器接收一个字符串,该字符串使用带有base64编码的des3在C++应用程序中加密
密码对象创建如下:
cipher = OpenSSL::Cipher::Cipher::new("des3")
cipher.key = key_str
cipher.iv = iv_str
Run Code Online (Sandbox Code Playgroud)
key_str和iv_str:是加密算法的密钥和初始化向量的字符串表示.它们与RoR和C++应用程序相同.
RoR方面的代码如下:
result = ""
result << cipher.update( Base64.decode64(message) )
result << cipher.final
Run Code Online (Sandbox Code Playgroud)
执行最后一行代码后,我得到一个例外
OpenSSL::CipherError (bad decrypt)
Run Code Online (Sandbox Code Playgroud)
这有什么不对?有任何想法吗 ?
c# ×3
.net ×2
asp.net-4.0 ×1
asp.net-mvc ×1
c++ ×1
constants ×1
declaration ×1
encoding ×1
encryption ×1
html ×1
iphone ×1
java ×1
mysql ×1
openssl ×1
overloading ×1
php ×1
readonly ×1
ruby ×1
security ×1
spring.net ×1
static ×1