我在我的应用程序中使用CoreData,具有类型的持久存储NSInMemoryStoreType.
是否有必要NSManagedObjectContext save:与这种类型的商店打电话?是否传递save:到NSManagedObjectContext实际上做任何事情的内存存储?
Apple的文档只是说明:
save:
尝试将未保存的更改提交到其持久存储的已注册对象.
这在内存存储的上下文中实际意味着什么?
我有一个第三方框架(我已经开发)作为Xcode中命令行应用程序的子项目.
如果我在Xcode中构建我的命令行应用程序,它会构建框架,然后构建应用程序,链接到框架.
当我运行构建的应用程序时,它正确地在应用程序的当前工作目录中查找框架.所以:
otool -L my_application
得到:
@ executable_path/MyFramework.framework /版本/ A/MyFramework
但是,如果我从命令行构建我的应用程序xcodebuild,构建的应用程序查找/Library/Frameworks/框架,我得到以下运行时错误:
dyld:未加载库:/ Library/Frameworks/MyFramework.framework/Versions/A/MyFramework引用自:/ path/to/my_application原因:未找到图像
所以,基本上xcodebuild似乎没有运行必要的命令(install_name_tool -change?)来更新可执行文件的链接@executable_path/..
我的xcodebuild命令是以下形式:
xcodebuild -project path/to/project.xcodeproj -scheme my_scheme -configuration Release CONFIGURATION_BUILD_DIR=`pwd`/project
Run Code Online (Sandbox Code Playgroud)
这是OS X 10.8.4上的Xcode 4.6
我正在为C库开发一些SWIG生成的Java绑定.该库包含带参数类型的函数void *.上C面这些将通常作为指针类型的数组被传递float或int流延到void *.在生成的Java绑定中,这会产生采用类型参数的方法SWIGTYPE_p_void.
在Java绑定中构造浮点数/整数数组的最佳方法是什么,以便它们可以作为类型传递SWIGTYPE_p_void给这些方法?
目前我正在我的example.i文件中定义一个辅助函数:
void *floata_to_voidp(float f[])
{
return (void *)f;
}
Run Code Online (Sandbox Code Playgroud)
然后在Java端做这样的事情:
float foo[] = new float[2];
SWIGTYPE_p_void av = null;
// do something with foo
av = example.floata_to_voidp(foo);
example.myfunction(av);
Run Code Online (Sandbox Code Playgroud)
这看起来相当丑陋,特别是因为我想inta_to_voidp()在SWIG接口文件中为我想要支持的每种类型转换都需要一个等等.
有没有办法在没有辅助函数的情况下执行此操作,并且在Java端涉及更少的额外代码来转换数据类型?
更新(2012年6月17日):给出问题的更多细节:我要做的是采用一组C函数,使用原型int foo(const float *data, int N, const void *argv, float *result)并将它们映射到Java端的方法,其中任意类型的数组都可以被传递为argv.请注意,argv是const void *与不是void *.
有没有办法让音频单元主机逐步执行插件的参数并获取以下信息:
AFAICT这个信息在插件中可用,但我无法弄清楚如何从主机端查询它.
在某些情况下,我可能想要将数据建模,将值限制在给定范围内.
例如,如果我想代表一个"哺乳动物",我可能想要将legs属性限制为0-4.
我的第一次尝试如下所示:
class Mammal {
var _numLegs:Int?
var numLegs:Int {
get {
return _numLegs!
}
set {
if 0...4 ~= newValue {
self._numLegs = newValue
}
else {
self._numLegs = nil
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这似乎并不令人满意,因为所有属性都是"公开的",没有什么能阻止类的客户设置Mammal._numLegs为某个任意值.
有没有更好的方法呢?
在C标准库中,字符串是使用字符数组实现的,以空字符结尾:'\ 0'.这样的ASCIZ字符串导致效率低下,因为每次我们需要知道字符串的长度时,我们需要迭代它寻找'\ 0'.
解决这个问题的方法是在创建字符串时存储字符串的长度,例如使用如下结构:
typedef struct cstring_ {
size_t nchars;
char chars[0];
} cstring;
Run Code Online (Sandbox Code Playgroud)
有没有人创建一个实现string.h函数的共享库,但使用结构而不是char *传递字符串?
如果没有,是否有一个特定的原因,这将是一个坏主意?
我有两个类,其中一个是基类,包含指向派生类上的成员对象的指针.
像这样:
class Bar { };
class Foo : Bar { };
class A
{
public:
A(Foo *foo) { this->foo = foo };
private:
Foo *foo;
}
class B : public A
{
public:
B() : A(&bar) { };
private:
Bar bar;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:B.bar 保证在作为初始化参数传递给构造函数之前被分配A?
换句话说:如果我创建的一个实例B是B->foo保证是一个有效的指针的一个实例Bar?
c ×2
audiounit ×1
c++ ×1
cocoa ×1
core-audio ×1
core-data ×1
inheritance ×1
ios ×1
java ×1
linker ×1
macos ×1
properties ×1
string ×1
swift ×1
swig ×1
xcode ×1
xcodebuild ×1