我想将Haskell引擎作为C库嵌入到IOS 5项目中 - 在IOS应用程序中运行Haskell代码.所以我有几个问题:
我正在构建沙盒OS X应用程序(OS X 10.10.5,Xcode 6.4)。在执行过程中,我打开NSOpenPanel对象。然后运行下一个代码段:
NSString* s=[@"~" stringByExpandingTildeInPath];
NSOpenPanel* panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:YES];
[panel setCanChooseFiles:NO];
NSURL* url=[NSURL fileURLWithPath:s];
if(url){
[panel setDirectoryURL:url];
}
[panel setAllowsMultipleSelection:YES];
[panel beginSheetModalForWindow:[self.outlineView window]completionHandler:^(NSInteger result) {}
Run Code Online (Sandbox Code Playgroud)
我的期望是在目录/Users/xxx/Library/Containers/com.123456.App/中打开面板
相反,该面板在目录/ Users / xxx中打开
实际上已将应用程序构建并部署到目录/Users/xxx/Library/Containers/com.123456.App/Data/
在调试时,我注意到这一点:
if(url){
[panel setDirectoryURL:url];
}
Run Code Online (Sandbox Code Playgroud)
网址包含正确的值:file:///Users/xxx/Library/Containers/com.123456.App/Data/
任何的想法?
我正在为 Mac OS X 应用程序使用 SQLite 3.8.11。我的目标是创建一个表,然后在内部引用其他表中的某个字段。例如:
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);
Run Code Online (Sandbox Code Playgroud)
但是,我想将trackartist插入到track 中,以便每一行都包含唯一的trackartist值。如果trackartist值已经在轨道内- 必须忽略新值。我怎么能在这个设置中做到这一点?UPDATE OR IGNORE 命令似乎不起作用,值重复。
继续这个已关闭的问题: C++:“auto”关键字影响数学计算?
正如人们建议的那样,我通过向浮点值添加“f”后缀来修改代码。
#include <cmath>
unsigned int nump=12u;
auto inner=2.5f;
auto outer=6.0f;
auto single=2.f*3.14159265359f/nump;
auto avg=0.5f*inner+0.5f*outer;
for (auto i=0u;i<nump;++i){
auto theta=i*single;
auto px=avg*sin(theta);
auto py=avg*cos(theta);
auto tw=17.f;
int v1=std::round(1.f+px-tw/2.0f);
int v2=std::round(2.f+py-tw/2.0f);
std::cout<<"#"<<i<<":"<<v1<<";"<<v2<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
相对
#include <cmath>
unsigned int nump=12u;
float inner=2.5f;
float outer=6.0f;
float single=2.f*3.14159265359f/nump;
float avg=0.5f*inner+0.5f*outer;
for (unsigned int i=0u;i<nump;++i){
float theta=i*single;
float px=avg*sin(theta);
float py=avg*cos(theta);
float tw=17.f;
int v1=std::round(1.f+px-tw/2.0f);
int v2=std::round(2.f+py-tw/2.0f);
std::cout<<"#"<<i<<":"<<v1<<";"<<v2<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
结果完全相同 - 两个版本之间的输出不同。那么这是否意味着“auto”总是将浮点值计算为“double”类型?
我想将块A,B,C添加到全局并发队列中。之后,我想立即向同一队列添加障碍。
我希望A,B,C都以某种顺序调用,但是当所有块终止时,将调用该屏障。
如何保证在此序列的中间不会插入其他块?例如,如果在其他地方我将块X部署在同一队列中,则我不希望在屏障之前执行它。
MacOS和iOS上都可以使用相同的解决方案吗?
让我们考虑下一个片段:
int val=5;
int& ref=val;
std::atomic<int> atomicref(ref);
++atomicref;
std::cout<< "atomic ref="<<atomicref.load()<<" original ref="<<ref<<" original val="<<val;
Run Code Online (Sandbox Code Playgroud)
当我在 Mac OS X、XCode 8.3.3、c++11 下编译它时,我收到如下输出:
atomic ref=6 original ref=5 original val=5
Run Code Online (Sandbox Code Playgroud)
该行:
std::atomic<int> atomicref(ref);
当然看起来很可疑,因为原子下的类型与变量声明中的类型不同 - 它是引用。
我想知道为什么这些值不匹配;说atomicref实际上创建了val的副本是否正确?
c++ ×2
cocoa ×2
ios ×2
macos ×2
auto ×1
c++11 ×1
haskell ×1
ios5 ×1
nsopenpanel ×1
nsurl ×1
objective-c ×1
osx-yosemite ×1
sqlite ×1
std ×1
stdatomic ×1