小编Phi*_*ert的帖子

性能测试的准确时间测量

查看某些内容(例如方法调用)接受代码的最精确方式是什么?

我猜的最容易和最快的是:

DateTime start = DateTime.Now;
{
    // Do some work
}
TimeSpan timeItTook = DateTime.Now - start;
Run Code Online (Sandbox Code Playgroud)

但这有多精确?还有更好的方法吗?

.net c# testing performance

307
推荐指数
6
解决办法
21万
查看次数

检测html表单是否被编辑的通用方法

我有一个标签式的html表单.在从一个选项卡导航到另一个选项卡时,即使数据没有更改,当前选项卡的数据也会保留(在数据库上).

我想仅在编辑表单时才进行持久性调用.表单可以包含任何类型的控件.弄乱表单不需要输入一些文本,但在日历控件中选择日期也符合条件.

实现此目的的一种方法是默认情况下以只读模式显示表单并使用"编辑"按钮,如果用户单击编辑按钮,则会调用DB(再次,无论数据是否被修改)这是对现有技术的改进.

我想知道如何编写一个通用的javascript函数来检查是否有任何控件值被修改?

html javascript jquery

83
推荐指数
6
解决办法
6万
查看次数

将基于回调的异步方法转换为等待任务的最佳方法

将使用回调的"经典"异步方法转换/包装到返回(等待)任务的东西的最佳方法是什么?

例如,给定以下方法:

public void GetStringFromUrl(string url, Action<string> onCompleted);
Run Code Online (Sandbox Code Playgroud)

我知道将它包装成返回任务的方法的唯一方法是:

public Task<string> GetStringFromUrl(string url)
{
     var t = new TaskCompletionSource<string>();

     GetStringFromUrl(url, s => t.TrySetResult(s));

     return t.Task;
}
Run Code Online (Sandbox Code Playgroud)

这是实现这一目标的唯一方法吗?

有没有办法在任务本身中包含对GetStringFromUrl(url,callback)的调用(即调用本身将在任务内运行而不是同步)

c# asynchronous task-parallel-library c#-5.0

65
推荐指数
2
解决办法
2万
查看次数

在Objective-C/iPhone应用程序中使用"经典"malloc()/ free()是否可以?

我已经玩了一段时间的iPhone开发,虽然当你是一个"硬核".NET开发人员时感觉有点尴尬,但是一旦你习惯它就不会那么糟糕.

在我读到的关于Objective-C的每本书中,都只讨论了内存管理的保留/释放(引用计数).作为一个古老的C/C++开发人员,使用malloc()和free()分配"正常"方式似乎很奇怪只在一些脚注中提到.

我知道malloc()和free()在Objective-C中工作,但我很好奇它是否是常见的做法.毕竟,如果我想分配一个包含100个整数的数组,那么这似乎是最有效的方法:

int *array = malloc(sizeof(int) * 100);

memset(array,0,sizeof(int) * 100);

// use the array

free(array);
Run Code Online (Sandbox Code Playgroud)

这确实是最好的方式,还是应该避免普通的C内存管理?

c memory-management objective-c

55
推荐指数
3
解决办法
4万
查看次数

在Xcode/iPhone中堆栈跟踪或更多关于未处理异常的信息

请原谅我的无知,但在iPhone模拟器中运行iPhone应用程序时,有些事情一直困扰着Xcode调试器.

有时,当我在Interface Builder中搞砸了一些东西时,我在运行时得到一个未处理的异常,然后我被抛回Xcode.我唯一看到的是单行"未捕获的异常"或类似的东西.从我所看到的,没有其他信息,更不用说堆栈跟踪或任何其他有用的信息.

在过去十年左右的时间里,我一直在使用Visual Studio进行开发,而且我习惯于获得一个很好的堆栈跟踪并在发生类似情况时完成异常信息.

我确信我只是遗漏了一些非常明显的东西......希望......

iphone xcode

51
推荐指数
1
解决办法
2万
查看次数

在Swift中使用类型名称的通用函数

在C#中,可以通过指定类型来调用泛型方法:

public T f<T>()
{
   return something as T
}

var x = f<string>()
Run Code Online (Sandbox Code Playgroud)

Swift不允许您在调用它时专门化泛型方法.编译器希望依赖类型推断,因此这是不可能的:

func f<T>() -> T? {
    return something as T?
}

let x = f<String>() // not allowed in Swift
Run Code Online (Sandbox Code Playgroud)

我需要的是一种将类型传递给函数的方法,以及使用泛型返回该类型的对象的函数

这有效,但它不适合我想做的事情:

let x = f() as String?
Run Code Online (Sandbox Code Playgroud)

编辑(澄清)

我可能不太清楚这个问题实际上是什么,它是关于调用返回给定类型(任何类型)的函数的更简单的语法.

举个简单的例子,假设您有一个Any数组,并创建一个返回给定类型的第一个元素的函数:

// returns the first element in the array of that type
func findFirst<T>(array: [Any]) -> T? {
    return array.filter() { $0 is T }.first as? T
}
Run Code Online (Sandbox Code Playgroud)

您可以像这样调用此函数:

let array = [something,something,something,...]

let x = …
Run Code Online (Sandbox Code Playgroud)

generics swift swift2

20
推荐指数
1
解决办法
8859
查看次数

是否允许调用[self release]来控制对象的生命周期?

我想在Objective C中创建一个对象,但我没有对它的引用.

是否允许通过调用[self release]让对象控制自己的生命周期?

如果你想知道为什么我需要这个:我想创建一个订阅某些通知的对象,但过了一段时间后不再需要该对象并且应该消失.

那么,允许以下内容吗?

- (void) destroyMyself {
   [[NSNotificationCenter defaultCenter] removeObserver:self];

   [self release];
} 
Run Code Online (Sandbox Code Playgroud)

iphone objective-c

19
推荐指数
2
解决办法
5397
查看次数

如何在jQuery中捕获$ .each中的最后一次迭代?

var arr = {'a':fn1,'b':fn2,'c':fn3}

$.each(arr,function(name,func){
(do something particular for the last iteration)
...
})
Run Code Online (Sandbox Code Playgroud)

如果不使用其他变量,那将是最好的.

编辑:我的意思是字面上最后一个,这是最后一对我键入.

javascript jquery properties

19
推荐指数
1
解决办法
3万
查看次数

SQL Server连接池未检测到已关闭的连接?

多年来,我在连接到SQL服务器的所有Web应用程序上遇到了非常奇怪的问题.

问题是如果数据库服务器发生了某些事情(服务器重启或其他问题),de web app就会从那时起停止工作,即使数据库服务器处于活动状态且之后也是如此.

会发生的是每个ADO.NET操作(ExecuteNonQuery,CreateReader,BeginTransaction,...)都会因InvalidOperationException失败:" 操作无效.连接已关闭 ".似乎对SqlConnection.Open()的调用从应用程序池中检索了一个连接...已关闭!

根据文档,连接池应该自动从连接池中删除断开的连接,但是显然闭合连接不被视为"切断",因此对SqlConnection.Open()的调用愉快地返回一个已关闭的连接,假设它是打开,不检查这个.

我目前的解决方法是在打开连接后立即检查连接状态:

using (SqlConnection connection = new SqlConnection( connectionString ))
{
   connection.Open();

   if (connection.State != ConnectionState.Open)
   {
      SqlConnection.ClearAllPools();

      connection.Open();
   }

   // ...
}
Run Code Online (Sandbox Code Playgroud)

这种解决方法似乎现在有效,但我觉得这样做并不舒服.

所以我的问题是:

  1. 为什么SqlConnection.Open()从连接池返回关闭的连接?
  2. 我的解决方法有效吗?
  3. 有没有更好的方法来处理这个?

.net sql-server ado.net connection-pooling

18
推荐指数
1
解决办法
1万
查看次数

走响应链以传递自定义事件.这是错的吗?

根据iOS文档,响应者链用于"向上传递"触摸事件.它也用于控件生成的操作.精细.

我真正想做的是发送自定义事件"上链".接收事件的第一响应者将处理它.这似乎是一个非常常见的模式,但我找不到任何关于如何做到"iOS/Cocoa方式"的好解释.

由于响应链正是我所需要的,我提出了这样的解决方案:

// some event happened in my view that 
// I want to turn into a custom event and pass it "up":

UIResponder *responder = [self nextResponder];

while (responder) {

   if ([responder conformsToProtocol:@protocol(ItemSelectedDelegate)]) {
       [responder itemSelected:someItem];
       break;
   } 

   responder = [responder nextResponder];
}
Run Code Online (Sandbox Code Playgroud)

这很有效,但我觉得应该有其他方法来处理这个问题.手动走链子这种方式似乎不太好......

请注意,通知在这里不是一个好的解决方案,因为我只希望参与视图层次结构中的对象,并且通知是全局的.

在iOS中处理这个问题的最佳方法是什么(和Cocoa一样)?

编辑:

我想要完成什么?

我有一个视图控制器,它有一个视图,有子视图等...几个子视图是一个特定类型,显示数据库中的项目.当用户点击此视图时,应将信号发送到控制器以导航到此项目的详细信息页面.

处理点击的视图位于视图层次结构中主视图下方的几个级别.我必须告诉控制器(或在某些情况下,特定的子视图"向上链")选择了一个项目.

听通知是一种选择,但我不喜欢这种解决方案,因为选择一个项目不是全局事件.它严格依赖于当前的视图控制器.

iphone events cocoa ios

18
推荐指数
3
解决办法
7799
查看次数