以下代码:
#include <stdio.h>
#include <memory>
#include <functional>
struct Foo{
Foo():
m_p(std::make_shared<int>())
{}
Foo(const Foo &foo)
{
printf("copy\n");
}
std::shared_ptr<int> m_p;
};
void func(Foo foo)
{}
int main()
{
Foo foo;
std::function<void (void)> f = std::bind(func, foo);
printf("use count : %ld\n", foo.m_p.use_count());
f();
}
Run Code Online (Sandbox Code Playgroud)
得到的结果:
copy
copy
use count : 1
copy
Run Code Online (Sandbox Code Playgroud)
由于Foo被复制,我认为m_p的use_count应为2.
我正在使用clang ++
Apple LLVM 5.0版(clang-500.2.79)
我在调试模式下编译代码.
我有3个MVC,在这里命名为A,B,C.
A是主MVC,按钮"Menu"通过popover segue连接到B.
A还连接到C,手动显示segue.
B是一个弹出窗口MVC,按钮"Detail"连接到A,带有展开segue.
C是具有详细信息的细节MVC.
在A.的展开函数内部,我调用performSegueWithIdentifier来显示C.
预期的行为是
但运行我得到的应用程序.
C突然出现并消失,这不是我想要的.
一些额外的信息