小编Bor*_*isV的帖子

IOS 5下的Haskell内存管理

我想将Haskell引擎作为C库嵌入到IOS 5项目中 - 在IOS应用程序中运行Haskell代码.所以我有几个问题:

  1. Haskell在ARC下是否有任何已知的内存管理问题?
  2. 我怎样才能确保Haskell不会干扰IOS内存管理?
  3. 什么可能是处理这些问题的有效策略?

haskell ios ios5 automatic-ref-counting

11
推荐指数
1
解决办法
490
查看次数

沙盒应用程序中的NSOpenPanel会忽略提供的目录URL

我正在构建沙盒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/

任何的想法?

cocoa nsurl nsopenpanel appstore-sandbox osx-yosemite

5
推荐指数
1
解决办法
707
查看次数

SQLite:使外键唯一

我正在为 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 命令似乎不起作用,值重复。

sqlite

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

“auto”关键字是否总是将浮点值评估为双精度?

继续这个已关闭的问题: 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”类型?

c++ auto

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

将块并发插入并发队列

我想将块A,B,C添加到全局并发队列中。之后,我想立即向同一队列添加障碍。

我希望A,B,C都以某种顺序调用,但是当所有块终止时,将调用该屏障。

如何保证在此序列的中间不会插入其他块?例如,如果在其他地方我将块X部署在同一队列中,则我不希望在屏障之前执行它。

MacOS和iOS上都可以使用相同的解决方案吗?

macos cocoa objective-c grand-central-dispatch ios

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

std:atomic 使用引用初始化会创建基础变量的副本吗?

让我们考虑下一个片段:

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++ macos std c++11 stdatomic

0
推荐指数
1
解决办法
408
查看次数