小编j b*_*j b的帖子

是否有必要调用NSManagedObjectContext保存:对于内存存储?

我在我的应用程序中使用CoreData,具有类型的持久存储NSInMemoryStoreType.

是否有必要NSManagedObjectContext save:与这种类型的商店打电话?是否传递save:到NSManagedObjectContext实际上做任何事情的内存存储?

Apple的文档只是说明:

save:
尝试将未保存的更改提交到其持久存储的已注册对象.

这在内存存储的上下文中实际意味着什么?

cocoa core-data ios

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

使用xcodebuild链接到第三方框架

我有一个第三方框架(我已经开发)作为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

macos xcode linker xcodebuild

6
推荐指数
0
解决办法
568
查看次数

如何在SWIG生成的Java绑定中转换为SWIGTYPE_p_void类型?

我正在为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 *.

c java java-native-interface swig

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

是否可以枚举音频单元参数描述?

有没有办法让音频单元主机逐步执行插件的参数并获取以下信息:

  • 参数名称为字符串,例如"延迟时间"
  • 参数范围(最小值,最大值)
  • 参数单位(例如秒)
  • 参数控制(例如滑块)

AFAICT这个信息在插件中可用,但我无法弄清楚如何从主机端查询它.

core-audio audiounit

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

如何将属性限制为范围?

在某些情况下,我可能想要将数据建模,将值限制在给定范围内.

例如,如果我想代表一个"哺乳动物",我可能想要将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为某个任意值.

有没有更好的方法呢?

properties swift

4
推荐指数
2
解决办法
1957
查看次数

有没有人用string来实现string.h的替换来存储字符串和长度?

在C标准库中,字符串是使用字符数组实现的,以空字符结尾:'\ 0'.这样的ASCIZ字符串导致效率低下,因为每次我们需要知道字符串的长度时,我们需要迭代它寻找'\ 0'.

解决这个问题的方法是在创建字符串时存储字符串的长度,例如使用如下结构:

typedef struct cstring_ {
    size_t nchars;
    char chars[0];
} cstring;
Run Code Online (Sandbox Code Playgroud)

有没有人创建一个实现string.h函数的共享库,但使用结构而不是char *传递字符串?

如果没有,是否有一个特定的原因,这将是一个坏主意?

c string

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

在基类初始化列表中传递成员对象是否可以?

我有两个类,其中一个是基类,包含指向派生类上的成员对象的指针.

像这样:

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++ inheritance initialization initializer-list

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