标签: nspointerarray

如何在Swift中声明一个弱引用数组?

我想在Swift中存储一组弱引用.数组本身不应该是弱引用 - 它的元素应该是.我认为Cocoa NSPointerArray提供了非类型安全版本.

weak-references automatic-ref-counting nspointerarray swift

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

NSPointerArray奇怪的压缩

NSPointerArray一些NSObject已被释放的弱者.在打电话给compact我看之前是:

(lldb) po [currentArray count]
1
(lldb) po [currentArray pointerAtIndex:0]
<nil>
(lldb) po [currentArray allObjects]
<__NSArrayM 0x16f04f00>(

)
Run Code Online (Sandbox Code Playgroud)

这是有道理的,但真正奇怪的是,当我调用compact该数组时,我看到了相同的值!计数仍然返回1并且pointerAtIndex:0nil.

为什么没有删除nil?

编辑

这是完整的代码(是的,它是XCTesting框架):

- (void)testCompaction {
    __weak id testingPointer = nil;

    NSPointerArray *weakArray = [NSPointerArray weakObjectsPointerArray];

    @autoreleasepool {

        NSObject *someObj = [[NSObject alloc] init];

        testingPointer = someObj;

        [weakArray addPointer:(__bridge void*)testingPointer];

        NSLog(@"before compaction inside autorelease: testingPointer = %@ count = %d, allObjects = %@, pointerAtIndex:0 = %@, pointerAtIndex:0 class = …
Run Code Online (Sandbox Code Playgroud)

objective-c automatic-ref-counting nspointerarray

12
推荐指数
2
解决办法
1129
查看次数

如何将对象添加到NSPointerArray?

我想在一个弱的引用存储,NSPointerArray但我得到一个错误:

public var objectWithReloadFRC = NSPointerArray(options: NSPointerFunctionsWeakMemory)
objectWithReloadFRC.addPointer(self) //self is an UIViewController subclass
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

也试过这个:

objectWithReloadFRC.addPointer(UnsafePointer(self)
Run Code Online (Sandbox Code Playgroud)

ios nspointerarray swift

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