我知道现在有一种模拟位置的方法,但有没有办法模拟罗盘值?
直接从NSManagedObjectContext 文档中我对以下段落感到困惑:
基于队列的托管对象上下文的Setter方法是线程安全的.您可以直接在任何线程上调用这些方法.
最大的问题是ManagedObjectContext上的setters方法,但不是在这个上下文拥有的ManagedObjects中?还是两者兼而有之?特别是如果对于私有队列MOC对象是这样的:
[privateContext setPersistentStoreCoordinator:self.persistentStoreCoordinator];
Run Code Online (Sandbox Code Playgroud)
无论线程执行此行,都是线程安全的,但是会像:
[myPrivateQueueOwnedManagedObject setTitle:@"My Title];
Run Code Online (Sandbox Code Playgroud)
也是线程安全吗?文档对此真的很模糊,但我的理解是,这不是线程安全是正确的吗?
在ManagedObjectContext中获取属性的getter如请求persistentStoreCoordinator属性会是线程安全的吗?我的理解是它不会.
另外,我一直认为某些托管对象属性(如objectID)是线程安全的,不需要使用performBlock:或performBlockAndWait进行访问:托管对象上是否存在线程安全的其他任何属性?
我正在使用javanica并注释我的hystrix命令方法,如下所示:
@HystrixCommand(groupKey="MY_GROUP", commandKey="MY_COMMAND" fallbackMethod="fallbackMethod")
public Object getSomething(Object request) {
....
Run Code Online (Sandbox Code Playgroud)
我试图对我的回退方法进行单元测试,而不必直接调用它们,即我想调用带@HystrixCommand注释的方法,并在抛出500错误后让它自然地流入回退.这一切都在单元测试之外工作.
在我的单元测试中,我使用弹簧MockRestServiceServer返回500个错误,这部分正在工作,但Hystrix没有在我的单元测试中正确初始化.在我的测试方法开始时,我有:
HystrixRequestContext context = HystrixRequestContext.initializeContext();
myService.myHystrixCommandAnnotatedMethod();
Run Code Online (Sandbox Code Playgroud)
在此之后,我试图通过键获取任何hystrix命令并检查是否有任何已执行的命令,但列表始终为空,我使用此方法:
public static HystrixInvokableInfo<?> getHystrixCommandByKey(String key) {
HystrixInvokableInfo<?> hystrixCommand = null;
System.out.println("Current request is " + HystrixRequestLog.getCurrentRequest());
Collection<HystrixInvokableInfo<?>> executedCommands = HystrixRequestLog.getCurrentRequest()
.getAllExecutedCommands();
for (HystrixInvokableInfo<?> command : executedCommands) {
System.out.println("executed command is " + command.getCommandGroup().name());
if (command.getCommandKey().name().equals(key)) {
hystrixCommand = command;
break;
}
}
return hystrixCommand;
}
Run Code Online (Sandbox Code Playgroud)
我意识到我在单元测试初始化中遗漏了一些东西,任何人都可以指出我正确的方向如何正确地进行单元测试吗?
假设您有结果集,例如:
DATE ID cost
---------------------------------------
01/01/2011 1 10
01/01/2011 1 10
01/01/2011 2 10
01/01/2011 2 10
Run Code Online (Sandbox Code Playgroud)
我想要一种方法来对成本值进行求和,但对于每个不同的ID只需要一次,这样当我按日期分组时,我得到的结果如
DATE cost
Run Code Online (Sandbox Code Playgroud)
01/01/2011 20
Run Code Online (Sandbox Code Playgroud)
我先尝试过类似的东西
sum(distinct cost)
Run Code Online (Sandbox Code Playgroud)
但是诅咒只返回10我也尝试过:
sum(case when distinct id then cost else 0 end)
Run Code Online (Sandbox Code Playgroud)
但这不是一个功能性查询.
我正在创建一个库,即使它通过打包我的所有代码并将所有头文件放在一个文件夹然后压缩文件夹和静态库中工作得很好,我只是无法弄清楚"复制"的目的标题"构建阶段下的部分".
我已阅读所有这些链接:
Stackoverflow:复制标题:public vs private vs project
但我仍然没有看到设置复制标题的重点,我意识到你可以在构建设置>打包下设置私有和公共路径,并且头文件将在构建后转到该文件夹.但这有什么意义呢?这有什么不同于不设置单个副本头文件,只需抓取.a文件抓取我的所有头文件并将它们放在一个文件夹中?设置复制项目标题的目的是什么?,因为它们根本不包含在目标中?
我是花栗鼠的新手,我刚刚使用它几天,所以我猜这是非常明显的,但是我找不到任何相关的文档.在花栗鼠中是否有任何回调或方法告诉你2个给定的形状是否发生了碰撞?
如果不是简单地在sprite上使用cgrectcontains的最佳方法?
-Oscar
我试图改变我的Sprite锚点,以便我可以旋转0.0f,0.0f锚点.起初我的对象是默认锚点(0.5f,0.5f)处的旋转.但是后来我需要它在0.0,0.0 AnchorPoint上旋转.
问题是我不能改变锚点并相应地改变位置,因此它保持在同一位置,没有对象看起来快速移动并重新定位到其原始点.
有没有办法可以立刻设置锚点和我的精灵的位置,而根本不移动它?谢谢.
-Oscar
我使用以下代码将对象传递给辅助线程:
(void)login:(id)sender
{
platformMsgs_LoginRequest *loginRequest = [[[platformMsgs_LoginRequest alloc] init] autorelease];
//more code...
[NSThread detachNewThreadSelector:@selector(sendLoginRequest:) toTarget:self withObject:loginRequest];
//more code...
}
- (void)sendLoginRequest:(platformMsgs_LoginRequest *)loginRequest
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[loginRequest retain];
NetSuiteBinding *binding = [NetSuiteServiceSvc NetSuiteBinding];
NetSuiteBindingResponse *response = [binding loginUsingParameters:loginRequest applicationInfo:nil partnerInfo:nil];
[self performSelectorOnMainThread:@selector(loginOperationCompleted:) withObject:response waitUntilDone:NO];
[loginRequest release];
[pool drain];
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,自动释放正确的方法来处理这个对象的释放吗?一旦它传递给辅助线程,我保留它并在我不再需要它时释放它.
但是,自动释放可能会在辅助线程有机会保留它之前释放对象吗?我是否必须为此创建一个ivar?以便我可以在performSelectorOnMainThread中释放该对象?登录后我不再需要该对象,因此ivar似乎不是正确的方法.处理这个问题的最佳方法是什么?谢谢.
-Oscar
基本上我想生成随机数不会重复很长时间(我不想使用序列),例如java使用的LCG:
synchronized protected int next(int bits) {
seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
return (int)(seed >>> (48 - bits));
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这种情况下的种子只会在2 ^ 48次调用后才重复,这是正确的吗?
所以我理解,如果我做了一个方法,如:
synchronized protected long next() {
seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
return seed;
}
Run Code Online (Sandbox Code Playgroud)
保证种子值在2 ^ 48次呼叫之前不重复?
这可能非常简单,但我以前从未使用过CAShapeLayers,我在顶部导入了这个:
import <QuartzCore/QuartzCore.h>
并且编译器没有抱怨,但链接器出现此错误:
"_OBJC_CLASS_$_CAShapeLayer", referenced from:
objc-class-ref in myClass.o
ld: symbol(s) not found for architecture armv7
Run Code Online (Sandbox Code Playgroud)
我需要导入什么才能使其工作?我正在使用Xcode 4.2并为iPhone iOS 4.3构建.
iphone ×7
ios ×2
java ×2
objective-c ×2
annotations ×1
arguments ×1
cashapelayer ×1
chipmunk ×1
core-data ×1
header-files ×1
hystrix ×1
nsthread ×1
oracle ×1
random ×1
retain ×1
select ×1
sql ×1
unit-testing ×1
variables ×1
xcode ×1
xcode4.2 ×1