小编Tom*_*m89的帖子

为iPhone编译FreeType?

我在Windows,Linux和OSX上使用FreeType没有一个问题,现在我将我的技术移植到IOS ......而且我找不到为它编译FreeType的方法.

起初我试图将每个FT文件放入我的项目中,但这显然不起作用.

然后我尝试按照本教程制作一个静态库.虽然我无法测试它是否适用于手臂目标,但它不适用于模拟器目标.

当试图将构建的库链接到XCode时,它说"libfreetype-simulator.a,文件是为存档而构建的,而不是被链接的架构(i386)",这很好,因为命令"lipo -info libfreetype-simulator.a"告诉我该文件是为x86_64构建的.我尝试用"./configure --i386-apple-darwin"配置它,这是日志.但是,最终的拱形是x86_64.

我怎样才能为i386,iphone模拟器构建freetype?我真的没有线索.

iphone config freetype ios

9
推荐指数
4
解决办法
8066
查看次数

C++ lambda不会对按值捕获的成员调用析构函数

我今天在XCode下对lambdas的这种奇怪行为感到非常痛苦 - 在尝试跟踪iOS中围绕代码的几个内存泄漏之后,我将其缩小到这个(和类似的)代码片段,在那里我分配所有权使用共享指针的延迟任务的东西:

void DBStorage::dispose(std::shared_ptr<DataChunk>& dc)
{
    backgroundQueue.queueTask([=]() {
        assert( dc.use_count() == 1 );

        if (dc->isDirty()) {
            //store to disk
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

(注意,运行lambda时共享指针的使用计数始终为1)

在执行之后,这个任务是null-ified pendingJob = nullptr;,我希望它可以调用所有按值捕获的对象的析构函数,从而调用析DataChunk构函数.但是,看起来在XCode/LLVM下 lc的析构函数永远不会被调用; 明确地调用它的dtor,使用mutable和删除std::function简单的delete也不起作用.

这是标准行为吗?我当然可以手动调用dc.reset()它按预期工作,但这很有必要使用共享指针.


解决方案 显然,这是一个已知的gcc bug.


的Contrib

具有Xcode 5.0.2/clang 3.3输出的独立样品

#include <iostream>
#include <memory>

void fnRef(std::shared_ptr<int>& ptr)
{
    auto lambda = [=]() { std::cout << ptr.use_count() << ':' << __PRETTY_FUNCTION__ << '\n'; };
    lambda();
}

void fnVal(std::shared_ptr<int> ptr) …
Run Code Online (Sandbox Code Playgroud)

c++ lambda xcode llvm c++11

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

如何强制XCode 4始终更新资源?

我在我的iPhone项目中添加资源(大量的.pngs和其他)将文件夹拖到它并选择"为任何添加的文件夹创建文件夹引用",以保留文件夹结构.它们已正确添加到"复制资源"构建阶段.

问题是,我浪费了很多时间,因为当我创建/删除/更新新资源时,它通常会忽略已更改的文件并坚持使用旧版本.

看起来它只是在更改资源时尝试更新资源,但它无法看到更改.在模拟器中,可以手动更新.app中的文件,但是当在设备上工作时,它会抱怨某些资源的代码符号已经改变!

唯一可靠的办法,我发现,迫使它来更新一切删除生成的产品,应用和设备的应用程序有时,直到它最终决定对旧版本给忘了,但是这样做对每个资源的变化是在浪费我疯狂的时间(游戏内容经常变化).

因此,简而言之:如何强制XCode禁用"版本控制"并且只是废弃所有资源并每次都复制它们?

谢谢!

编辑:我发现删除"build"文件夹中内置的.app文件夹总是强制XCode添加新文件...

当我删除该文件夹时,我仍然不知道它保存旧文件的位置,但这是更好的,因为它只按预期复制新资源.所以简单的脚本就好

rm -rf "$CODESIGNING_FOLDER_PATH"
Run Code Online (Sandbox Code Playgroud)

在每个构建中删除文件夹的技巧吗?

不幸的是,XCode显然在执行Build Phases选项卡之前运行代码签名,因此它更新旧目标,脚本删除旧目标,然后崩溃抱怨没有找到代码签名资源.

所以...我必须坚持手动删除文件,或者有没有办法在代码签名之前运行脚本?

ios xcode4

6
推荐指数
2
解决办法
6183
查看次数

标签 统计

ios ×2

c++ ×1

c++11 ×1

config ×1

freetype ×1

iphone ×1

lambda ×1

llvm ×1

xcode ×1

xcode4 ×1