草庐IT

weak_ptr

全部标签

c++ - 如何使用 ifdef 检测是否支持 Windows DWORD_PTR 类型?

有somenewintegertypes在WindowsAPI中支持Win64。他们并不总是得到支持;例如theyaren'tpresentinMSVC6.我怎样才能写一个#if是否支持这些类型的检测条件?(我的代码需要在许多不同版本的MicrosoftVisualC++下编译,包括MSVC6。因此我需要提供我自己对这些类型的定义,并带有#if以在较新的编译器中禁用它们)。(对于搜索者,完整的类型列表是:DWORD_PTR、INT_PTR、LONG_PTR、UINT_PTR、ULONG_PTR) 最佳答案 宏MSC_VER是在[12

c++ - 如何将 unique_ptr 与 operator new 一起使用

我正在分配一block具有输入大小的临时内存,我想使用unique_ptr跟踪适当的生命周期,而不必明确担心自己释放它。这是我想出的:{std::unique_ptrsp;sp.reset(reinterpret_cast(operatornew(100)));}我不得不使用BYTE因为MSVC不会用std::unique_ptr编译.根据我的测试,new和delete运算符按预期调用。由于这是一种不常见的用法(即显式使用operatornew),我想检查一下这没有什么问题吗?是否有更好/更清洁的替代品? 最佳答案 假设您想使用ne

ios - 属性属性 'nonnull' 和 'weak' 是互斥的

最近我将我的Xcode升级到版本7-XCode7.0。现在我将此消息发送到我的每个IBOutlet:@property(nonatomic,weak,nonnull)IBOutletUITableView*tableView;属性属性“nonnull”和“weak”是互斥的我能做什么? 最佳答案 weak的全部要点是当对象被释放时属性变为nil。nonnull的全部意义在于该属性永远不会是nil。这就是您不能同时应用两者的原因。使您的属性strongnonnull或只是weak。 关于i

iphone - weak 和 assign 属性之间的区别?

我有几个问题。1)assign属性会在哪里占用内存,因为我们不需要释放来减少引用计数?2)自动调零引用和非自动调零引用有什么区别?它是如何工作的?如何占用内存? 最佳答案 weak适用于对象(它们有引用计数和所有东西),但弱引用不会增加引用计数。但是一旦对象被释放(从代码中的任何地方),对该对象的任何弱引用都将设置为nil。这非常有用,因为如果您只使用强引用和弱引用,则不会以无效指针(指向已释放对象的指针)结束。assign绝对不对引用做任何事情,它通常用于整数、float和其他非对象类型。您当然可以为这样的变量分配一个对象引用,但

c++ - shared_ptr 和 iOS 中的引用计数是同一个思路吗?

我对C++或iOS都不是很有经验,所以我很好奇iOS的引用计数在boost共享指针和NSObject中的工作原理是否基本相同? 最佳答案 据我收集here,使用ARC与使用std::shared_ptr(“强”指针)和std::weak_ptr(“弱”指针)非常相似。滥用前者,避免后者。无论如何,如果可以的话,请选择std::unique_ptr。(另外,我有点惊讶你在为iOS编程时必须手动释放指针。在21世纪。) 关于c++-shared_ptr和iOS中的引用计数是同一个思路吗?,我

ios - ARC weak ivar 在返回之前发布 - 构建发布时,而不是调试

我有一个延迟创建对象并将其存储为弱属性的类。其他类可能会请求这个对象,但显然必须保持对它的强引用以防止对象被释放://.h@interfaceObjectManager@property(nonatomic,weak,readonly)NSObject*theObject;@end//.m@interfaceObjectManager()@property(nonatomic,weak,readwrite)NSObject*theObject;@end@implementationObjectManager-(NSObject*)theObject{if(!_theObject){_t

iphone - 使用 __weak 属性将参数传递给 block 会导致内存泄漏吗?

在我的支持ARC的iOS代码中,我需要将“self”和其他对象传递给一个block。更具体地说,我需要在ASIHTTPRequest的completionBlock中与self和ASIHTTPRequest对象进行交互。_operation=[[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(parseServerReply)object:nil];_request=[ASIHTTPRequestrequestWithURL:@"server.address"];//...[_requestsetComp

objective-c - 我什么时候应该对 IBOutlets 使用 weak 或 strong 限定符?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:ShouldIBOutletsbestrongorweakunderARC?在文档中,我读到“socket通常应该很弱,除了从文件所有者到nib文件(或在iOS中,Storyboard场景)中的顶级对象的socket应该很强。”例子?我不明白什么时候最好为IBOutlet使用“弱”而不是“强”属性。

ios - IBOutlets Strong or Weak - 它真的对内存管理有影响吗? (弧)

我最近在这里和其他网站上阅读了很多关于IBOutlets应该强还是弱的文章。官方判定它们应该是弱的,除非它们引用顶级xib对象。这很好。然而,我还不清楚为什么将它们设置为强或弱实际上会对应用程序的内存管理产生影响。特别是从iOS6开始,viewDidUnload不再在收到内存警告时调用,因此从这个意义上说,为IBOutlets选择弱或强不会有任何区别。虽然对于不再位于导航堆栈中的ViewController(即在它们被加载然后弹出之后),我认为任何声明为弱的IBOutlets都将被释放,但我的想法是否正确?感谢您的任何见解! 最佳答案

ios - 为什么 weak for property 和 __weak for instance variable 表现不同

我知道strong和weak是属性声明中使用的修饰符,而__strong和__weak用于实例变量的声明...strong表示只要我拥有它就将对象保留在内存中,weak表示保留对象在内存中,只要其他人对它有很强的引用……对吧?但我不明白为什么weak属性和__weak例如变量的行为不同?这就是我想知道的......@interfaceDemoViewController(){__weakNSArray*weakArray;__strongNSArray*strongArray;__weakNSString*weakString;__strongNSString*strongString