小编Dan*_*nra的帖子

NSObject的保留方法是原子的吗?

NSObject的保留方法是原子的吗?

例如,当从两个不同的线程保留相同的对象时,它是否承诺保留计数增加了两倍,或者保留计数是否可能只增加一次?

谢谢.

cocoa atomic retain

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

调用std :: set <Type*> :: find时避免使用const_cast

有没有什么好方法可以避免const_cast下面的内容,同时保持const的正确性?

没有const_cast下面的代码不编译.set::find获取对set的键类型的const引用,因此在我们的例子中它保证不改变传入的指针值; 但是,没有任何保证不改变指针指向的内容.

class C {
public:
   std::set<int*> m_set;

   bool isPtrInSet(const int* ptr) const
   {
       return m_set.find(const_cast<int*>(ptr)) != m_set.end();
   }
};
Run Code Online (Sandbox Code Playgroud)

c++ const set const-cast

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

从std :: array获取对原始数组的引用

获取对std::array底层原始(C)数组的引用的规范方法是什么?

data()方法只返回一个原始指针,这使得它不适合例如传递到接受对已知大小的原始数组的引用的函数.

另外,有一个很好的理由为什么data()返回一个原始指针,而不是对底层原始数组的引用,或者这只是一个疏忽?

c++ arrays c++11

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

为什么std :: function可以用一个具有不同返回类型的lambda构造?

以下编译正常:

#include <functional>

int main()
{
    std::function<const int&()> f = []() -> int {return 1;};
    const int& r = f(); // r is a dangling reference
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么可以将返回类型设置为std::function具有const int&返回类型的lambda int?恕我直言,允许这种演员隐含地发生并且没有任何警告.

c++ lambda std-function

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

连接一系列std :: arrays

请考虑以下事项:(Wandbox)

#include <array>
#include <algorithm>
#include <iostream>

template<typename T, int N, int M>
auto concat(const std::array<T, N>& ar1, const std::array<T, M>& ar2)
{
    std::array<T, N+M> result;
    std::copy (ar1.cbegin(), ar1.cend(), result.begin());
    std::copy (ar2.cbegin(), ar2.cend(), result.begin() + N);
    return result;
}

int main()
{
    std::array<int, 3> ar1 = {1, 2, 3};
    std::array<int, 2> ar2 = {4, 5};
    auto result = concat<int, 3, 2>(ar1, ar2);
    for (auto& x : result)
        std::cout << x << " ";
    std::cout << std::endl;
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c++ arrays templates c++11

10
推荐指数
3
解决办法
759
查看次数

按域启动包含URL的自定义应用

即使YouTube应用程序现在不是Apple的内置应用程序,看起来当点击YouTube链接(例如,通过邮件),从http://www.youtube.com开始,打开YouTube应用程序权利远.

iOS 6中的自定义应用程序有这种方法吗?我只知道自定义方案是通过URL启动应用程序的方式.

url-scheme launching-application custom-url ios6

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

如何正确转发unique_ptr?

通常什么是转发std :: unique_ptr的正确方法?

下面的代码使用std::move,我认为这是考虑的做法,但它与clang崩溃.

class C {
   int x;
}

unique_ptr<C> transform1(unique_ptr<C> p) {
    return transform2(move(p), p->x); // <--- Oops! could access p after move construction takes place, compiler-dependant
}

unique_ptr<C> transform2(unique_ptr<C> p, int val) {
    p->x *= val;
    return p;
}
Run Code Online (Sandbox Code Playgroud)

是否有更强大的约定,而不仅仅是确保p在将所有权转移到下一个功能之前获得所需的一切std::move?在我看来,move在一个对象上使用并访问它以向同一函数调用提供参数可能是一个常见的错误.

c++ move unique-ptr c++11

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

以编程方式从函数名称获取序数

在C++中,获取导出的dll函数的序数最简单的方法是什么?(寻找一种不会自己解析IAT的方法......)

c++ dll export ordinal

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

iOS上的PDF文本选择

我正在寻找在iOS中通过解析的PDF实现文本选择的方法.我已经通过使用Quartz PDF解析函数获得了所有字形的位置,但我不知道如何在不编写选择逻辑和从头开始查看的情况下实现文本选择的好方法(并在视图显示pdf或在某些透明覆盖视图中).

该体验应类似于在UITextField或UIWebView中选择文本(例如).

我可以整合的现有第三方解决方案是最好的.

pdf ios

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

C++中的惰性/多阶段构造

在C++中,对于多阶段构造/初始化对象,有什么好的现有类/设计模式?

我有一个带有一些数据成员的类,应该在程序流程的不同点初始化,因此必须延迟它们的初始化.例如,可以从文件中读取一个参数,从网络中读取另一个参数.

目前我使用boost :: optional来延迟构建数据成员,但是让我感到烦恼的是,optional在语义上与delay-construct不同.

我需要提醒boost :: bind和lambda部分函数应用程序的功能,并且使用这些库我可以设计多阶段构造 - 但我更喜欢使用现有的测试类.(或许还有另一种我不熟悉的多阶段建筑模式).

c++ constructor boost lazy-initialization

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