热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS如何在数组中使用弱引用(weakreference)

https:yq.aliyun.comarticles29434NSPointerArray的用处摘要:NSPointerArray的用处1.说明也许你对NSArra

https://yq.aliyun.com/articles/29434


NSPointerArray的用处

摘要: NSPointerArray的用处   1. 说明 也许你对NSArray使用了如指掌,每个加入到NSArry的对象都会被NSArray持有.有时候,这种特性不是我们想要的结果. 有时候,我们想将对象存储起来,但是不想让数组增加了这个对象的引用计数,这个时候,NSPointArray才是你想要的.

NSPointerArray的用处

 

1. 说明

也许你对NSArray使用了如指掌,每个加入到NSArry的对象都会被NSArray持有.有时候,这种特性不是我们想要的结果.

有时候,我们想将对象存储起来,但是不想让数组增加了这个对象的引用计数,这个时候,NSPointArray才是你想要的.


//
// WeakMutableArray.h
// NSPointerArray
//
// Created by YouXianMing on 15/6/5.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
//#import @interface WeakMutableArray : NSObject/*** 获取所有有效的对象*/
@property (nonatomic, strong, readonly) NSArray *allObjects;/*** 数组中有用对象的个数*/
@property (nonatomic, readonly) NSInteger usableCount;/*** 数组中所有对象的个数(包括NULL)*/
@property (nonatomic, readonly) NSInteger allCount;/*** 添加对象** @param object 被添加对象*/
- (void)addObject:(id)object;/*** 获取数组中的对象(可以获取到NULL对象)** @param index 数组下标** @return 对象*/
- (id)objectAtWeakMutableArrayIndex:(NSUInteger)index;@end


//
// WeakMutableArray.m
// NSPointerArray
//
// Created by YouXianMing on 15/6/5.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
//#import "WeakMutableArray.h"@interface WeakMutableArray ()@property (nonatomic, strong) NSPointerArray *pointerArray;@end@implementation WeakMutableArray- (instancetype)init {self = [super init];if (self) {[self setup];}return self;
}- (void)setup {self.pointerArray = [NSPointerArray weakObjectsPointerArray];
}- (void)addObject:(id)object {[self.pointerArray addPointer:(__bridge void *)(object)];
}- (id)objectAtWeakMutableArrayIndex:(NSUInteger)index {return [self.pointerArray pointerAtIndex:index];
}#pragma mark - 重写getter方法
@synthesize allObjects = _allObjects;
- (NSArray *)allObjects {return self.pointerArray.allObjects;
}@synthesize usableCount = _usableCount;
- (NSInteger)usableCount {return self.pointerArray.allObjects.count;
}@synthesize allCount = _allCount;
- (NSInteger)allCount {return self.pointerArray.count;
}@end

3. 细节






推荐阅读
author-avatar
手机用户2502887447
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有