C#具有该using语句,特别是对于IDisposable对象.据推测,using语句中指定的任何对象都将拥有某种应该确定性释放的资源.
然而,在我看来,编程中有许多设计具有单一,明确的开始和结束,但缺乏内在的语言支持.该using构造提供了使用代码编辑器的内置特征的机会,至少清楚且自然地突出了这种设计或操作的范围.
我想到的是经常以a BeginXXX()和EndXXX()方法开始的那种操作,尽管有很多不同的风格,例如涉及"开始"和"连接"的异步代码执行.
拿这个天真的例子吧.
webDataOperation.Start();
GetContentFromHardDrive();
webDataOperation.Join();
// Perform operation that requires data from both sources
Run Code Online (Sandbox Code Playgroud)
相反,如果Start方法返回了一个IDisposable.Dispose方法执行连接操作的对象,该怎么办?
using(webDataOperation.Start()) {
GetContentFromHardDrive();
}
// Perform operation that requires data from both sources
Run Code Online (Sandbox Code Playgroud)
或者,更好的是,我特别想到的是:我有一个对象,它具有高度专业化的图形blitting,并且有一个Begin()和End()方法(一个设计也出现在DirectX和XNA中).代替...
using(blitter.BlitOperation()) {
// Do work
}
// Use result
Run Code Online (Sandbox Code Playgroud)
它似乎更自然,更易读,但它是不可取的,因为它使用IDisposable界面和using声明用于非预期的目的?换句话说,这是否与以非直观的方式运算符操作符相同?
我使用了Clint Harris的教程来设置项目之间的代码共享,一切都在我的计算机上正常工作.但是在我的同事的机器上,似乎编译器在构建时没有从静态库项目中找到头文件.
我的同事通过克隆git存储库来获得我的项目.我们经历了所有相关的构建标志和XCode设置n次,但项目只是拒绝在他的机器上编译.
这就是我要求我的同事做的事情,主要是从教程中复制和粘贴:
按照这些步骤,使用静态库的项目应该在他的机器上编译与我的相同.但事实并非如此.基本上,他得到的错误是:
error: TheFrameworkHeader.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
然后是由缺少的标题引起的一串其他错误.
有什么策略可以解决这个问题吗?或者任何有类似经历并且可以分享一些来之不易的知识的人?我总结的说明中是否有任何遗漏?编译静态库时,是否需要在"复制标头"构建阶段设置标头的角色?
在我的iPhone应用程序中,要恢复以前查看的选项卡,在启动时我设置了setSelectedIndex :(也尝试过setSelectedViewController:根据文档但无效)
这适用于iPhone OS 3.0 - 但是在OS 2.x上,所选索引大于3(前4个选项卡)不会切换到所需视图.Apple在此处记录了这一点:http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITabBarController_Class/Reference/Reference.html#//apple_ref/occ/instp/UITabBarController/selectedViewController
我想知道是否可以切换到iPhone OS 2.x下的视图控制器?任何帮助表示赞赏.
顺便提一下我的模拟器设置索引大于3会引发错误(对于iPhone OS 2.x) - 所以我把它包装在@try {..} @catch(id ..){}块中 - 希望这个技术可以帮助某人.
iphone restore objective-c uitabbarcontroller uinavigationcontroller
我理解并欣赏.NET框架中System.WeakReference类的用处,但我对实现细节很好奇.
WeakReference是如何在.NET中实现的?MSDN详细讨论了WeakReference的用法,但是我已经看到了一些关于它如何工作的细节.
CLR如何跟踪引用并知道在收集目标时将内部句柄清空,而不会阻止GC?它是否需要CLR本身的特殊处理?
我主要担心的是,使用WeakReferences(特别是如果使用其中许多)与使用标准对象引用时的性能有关.
想象一下纯粹的.NET应用程序,它不使用COM组件也不使用PInvoke.目标系统是32位还是64位是否重要?
问候!我试图在没有任何Apple代码示例的情况下使用MKMapView,尽管还有其他一些不同的清晰度.(我知道,"阅读友好的手册."我已经做到了,但并非100%明确,所以请耐心等待.)
这是情况.我有一个MKMapView对象,其中我添加了一组大约十个MKPinAnnotation对象.到现在为止还挺好.一切都得到了很好的分配/释放,似乎没有任何来自仪器的投诉.
在初始显示时,我设置了一个MKCoordinateRegion对象,其中心点位于我们的第一个引脚位置,并且(任意)跨度为0.2 x 0.2.然后我打电话给:
[mapView setRegion:region animated:YES];
[mapView regionThatFits:region];
Run Code Online (Sandbox Code Playgroud)
哇!这很好用.
同时......我还有一个分段控制,允许移动到每个引脚位置.因此,当我点击列表时,地图会动画到每个新的引脚位置,并使用一对新的setRegion:animated:和regionThatFits: ...或者至少是这个想法.
当地图"移动"到新的引脚位置时,地图本身不会在下面更新.相反,我看到我的图钉在灰色/空白地图背景上... 直到我向任何方向轻推地图,不过有点轻微.然后地图显示通过!(如果我只是在前一个引脚位置的一小段距离内移动,我通常会看到地图的任何部分已经加载了.)
我怀疑我在这里做了一些愚蠢的事,但我无法弄清楚什么,至少不是来自MapKit文档.也许我正在使用错误的电话?(好吧,我确实需要设置该区域至少一次,是吗?移动它似乎没有帮助.)我也尝试过使用setCenterCoordinate:animated: - 同样的问题.
我现在什么都不做(没有双关语).只是想找到自己的方式.
线索欢迎/赞赏!
更新:调用setRegion:animated:和regionThatFits:第一次,然后是setCenterCoordinate:animated:在遍历列表时,没有任何效果.有趣的发现:如果我在两种情况下都将动画更改为NO,则地图会更新!!! 只有当它设置为YES时.(什么时候发生?!动画:破碎了?那不可能...... ???)
假设myapp/foo.py包含:
def info(msg):
caller_name = ????
print '[%s] %s' % (caller_name, msg)
Run Code Online (Sandbox Code Playgroud)
并myapp/bar.py包含:
import foo
foo.info('Hello') # => [myapp.bar] Hello
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望caller_name将其设置为__name__调用函数模块的属性(即'myapp.foo').如何才能做到这一点?
在这个问题中,我要求一种截断字符串以适合给定UITextView的好方法.由于SDK没有直接提供的方法,我最终编写了下面的递归方法(仅通过以下公共方法调用).但是,除非我在计算字符串的高度时从字段宽度中减去软糖因子15(kFudgeFactor),否则这不起作用.如果我不这样做,返回的字符串对于字段来说实际上太长了,并且显示在它下面的额外行中.任何人都知道为什么,我应该使用什么而不是这个软糖因素?
#pragma mark Size string to fit the new view
#define kFudgeFactor 15.0
#define kMaxFieldHeight 9999.0
// recursive method called by the main API
-(NSString*) sizeStringToFit:(NSString*)aString min:(int)aMin max:(int)aMax
{
if ((aMax-aMin) <= 1)
{
NSString* subString = [aString substringToIndex:aMin];
return subString;
}
int mean = (aMin + aMax)/2;
NSString* subString = [aString substringToIndex:mean];
CGSize tallerSize = CGSizeMake(self.frame.size.width-kFudgeFactor,kMaxFieldHeight);
CGSize stringSize = [subString sizeWithFont:self.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
if (stringSize.height <= self.frame.size.height)
return [self sizeStringToFit:aString min:mean max:aMax]; // too small
else
return …Run Code Online (Sandbox Code Playgroud) 我有一个在Windows上管理gdb进程的python脚本,我需要能够将SIGINT发送到生成的进程以暂停目标进程(由gdb管理)
似乎win32中只有SIGTERM可用,但很明显,如果我从控制台和Ctrl + C运行gdb,它认为它正在接收SIGINT.有没有办法可以假装这个功能,以便在所有平台上都可以使用这些功能?
(我使用的是子进程模块,以及python 2.5/2.6)
iphone ×3
.net ×2
python ×2
32-bit ×1
64-bit ×1
c# ×1
clr ×1
cocoa-touch ×1
gcc ×1
java ×1
mapkit ×1
numerical ×1
objective-c ×1
quadratic ×1
reference ×1
restore ×1
sigint ×1
solver ×1
stack-trace ×1
subprocess ×1
windows ×1
xcode ×1
xcodebuild ×1