http://www.ox-holdings.com

"万丈高楼平地起",新匍京娱乐场最全网站:添加是否将群通知计入未读的开关@interface

摘要即时通信云博客园云信于二零一八年0八月07日宣布5.5版,本次更新为机要版本更新,详细情况见文章内容。发表的本子本次宣布的版本号为 5.5版,更新时间为:二零一八年012月07日。iOS 更新内容新添NIMSDK设置新扩充NOS能源境况布局字段@interface NIMSDK : NSObject@property (nonatomic,strong卡塔尔国 NSMutableDictionary *sceneDict;@end财富管理新增添对气象协助的能源上传递口@protocol NIMResourceManager <NSObject>- (void卡塔尔(قطر‎upload:(NSString *)filepath scene:(NSString *卡塔尔(قطر‎scene progress:(nullable NIMHttpProgressBlock卡塔尔(قطر‎progress completion:(nullable NIMUploadCompleteBlockState of Qatarcompletion;@end图片实例对象新添场景初阶化接口@interface NIMImageObject : NSObject- (instancetypeState of QatarinitWithImage:(UIImage*)image scene:(NSString *)scene;- (instancetype)initWithFilepath:(NSString *)filepath scene:(NSString *)scene;- (instancetype)initWithData:(NSData *)data extension:(NSString *)extension scene:(NSString *卡塔尔(قطر‎scene;@end摄像实例对象新扩展场景起头化接口@interface NIMVideoObject : NSObject- (instancetype卡塔尔国initWithSourcePath:(NSString *)sourcePath scene:(NSString *)scene;- (instancetype)initWithData:(NSData *)data extension:(NSString *)extension scene:(NSString *卡塔尔(قطر‎scene;@end语音实例对象新扩充场景开首化接口@interface NIM奥迪(Audi卡塔尔oObject : NSObject- (instancetypeState of QatarinitWithSourcePath:(NSString *)sourcePath scene:(NSString *)scene;- (instancetype)initWithData:(NSData *)data extension:(NSString *)extension scene:(NSString *卡塔尔国scene;@end文件实例对象新扩大场景初叶化接口@interface NIMFileObject : NSObject- (instancetype卡塔尔initWithSourcePath:(NSString *)sourcePath scene:(NSString *)scene;- (instancetype)initWithData:(NSData*)data extension:(NSString*)extension scene:(NSString *卡塔尔scene;@end语音实例对象新增添音频MD5字段@interface NIM奥迪(Audi卡塔尔国oObject : NSObject@property (nullable,nonatomic, copy, readonly卡塔尔 NSString *md5;@end图片实例对象新增加图片MD5字段@interface NIMImageObject : NSObject@property (nullable,nonatomic, copy, readonly卡塔尔(قطر‎ NSString *md5;Android 更新内容新扩充1. NOS场景布局2. 殡葬新闻时能够钦定 NOS 场景3. 上传文件时得以钦赐 NOS 场景Windows(PC卡塔尔国 SDK 更新内容新增Gavin件上传扩充“场景”音讯运用5.5版本及其以上SDK(PC端、移动端、web端)达成的客户端(简单的称呼:5.5+ SDK),向利用PC5.4及其以下版本SDK完结的顾客端(简单的称呼:PC 5.4- SDK),发送图片新闻且顾客端开启下载缩略图功用时(即:5.5+ SDK 向 PC 5.4- SDK(preloadattach=true卡塔尔(قطر‎,发送图片新闻卡塔尔国,选取到的缩略图片大概是原图。建议升级SDK到5.5会同以上版本可能在UI层对缩略图做缩放管理。当地数据文件(*.db卡塔尔国备份成效修复Windows x64 下http库只怕引起的崩溃Web SDK 更新内容新添IM,chatroom伊始化增Gavin件存款和储蓄配置IM,chatroom发送文书消息增Gavin件存款和储蓄配置下载地址请从以下官方网址地址下载:

摘要即时通信云和讯云信于前年02月三十三日揭橥4.2版,本次更新为主要版本更新,详细情况见随笔内容。发布的本子这一次宣布的版本号为 4.2版,更新时间为:二零一七年0十月四十16日。iOS 更新内容新扩展聊天室辅助 bot 机器人,使用方法与日常消息未有差距于。增添是还是不是将群通告计入未读的开关@interface NIMSDKConfig : NSObject/** * @discusssion 默以为 NO。设置成 YES 的动静下,收到的群众文化艺术告也会计入未读数 */@property (nonatomic,assign卡塔尔国BOOL shouldCountTeamNotification;@end加多日志最大存在天数设置@interface NIMSDKConfig : NSObject/** * @discusssion 默感觉 7 天。即超过 7 天的 log 将被扑灭。只可以设置大于等于 2 的值。 */@property (nonatomic,assign卡塔尔NSInteger maximumLogDays;@end变再创立群接口改动/** * 创立群组 * * @param option 成立群选项 * @param users 用户ID列表 * @param completion 完结后的回调 */- (void)createTeam:(NIMCreateTeamOption *)option users:(NSArray<NSString *> *State of Qatarusers completion:(nullable NIMTeamCreateHandlerState of Qatarcompletion;创立群产生的回调由/** * 创立群组block * * @param error 错误,假诺成功则error为nil * @param teamId 群组ID */typedef void(^NIMTeamCreateHandler)(NSError * __nullable error,NSString * __nullable teamId);变更为/** * 成立群组block * * @param error 错误,要是成功则error为nil * @param teamId 群组ID * @param failedUserIds 邀约战败的群成员ID */typedef void(^NIMTeamCreateHandler)(NSError * __nullable error, NSString * __nullable teamId, NSArray<NSString *> * __nullable failedUserIdsState of Qatar;未来开立群恐怕会冒出建群成功,建群同期诚邀的用户部分成功的气象。当时建群还是成功,error 消息为 nil ,并赶回邀约退步的群成员 ID 集结。Android 更新内容新扩展1. 加多聊天室 bot 机器人功能,加多机器人上行音信创设接口:ChatRoomMessageBuilder#create罗布otMessage。2. 报到选项增添群通告新闻是不是计入未读数按钮:SDKOptions#teamNotificationMessageMarkUnread。改造1. 对单个客户所在群的数额加多节制,影响到接口:TeamService#createTeam, 重返结果CreateTeamResult,包罗特邀败北账号列表TeamService#addMembers, 再次回到结果 List,即约请退步账号列表假设约请成员中有群数量超越限制,重临码仍是果熟蒂落,并且同临时候重临这一部分超限的账号。2. 减轻登入偶现登陆 417 难点。3. 添Garden录同步战败情况管理。4. 增多 IPC ACK 机制,消除极端情形下群音信错失的难点。5. 清除 HttpDownload 安全警报难题。Windows(PC卡塔尔国 SDK 更新内容新添群通告消息是或不是计为未读数大增开关配置 nim_client.h闲谈室帮助机器人修复修复有个别场景下群成员同步bugWeb SDK 更新内容新添谈天室无名登入闲聊室机器人及其发生新闻接口闲聊室获取机器人接口下载地址请从以下官方网址地址下载:

@interface _YYLinkedMapNode : NSObject {

    @package

    __unsafe_unretained _YYLinkedMapNode *_prev; // __unsafe_unretained 是为着品质优化,节点被 _YYLinkedMap 的 _dic 强引用

    __unsafe_unretained _YYLinkedMapNode *_next; // __unsafe_unretained 是为了质量优化,节点被 _YYLinkedMap 的 _dic 强引用

    id _key;

    id _value;

    NSUInteger _cost;  // 记录费用,对应 YYMemoryCache 提供的 cost 调整

    NSTimeInterval _time;// 记录时间,对应 YYMemoryCache 提供的 age 调节

}

@end

@interface _YYLinkedMap : NSObject {

    @package

    CFMutableDictionaryRef _dic; // // 不要直接设置该对象

    NSUInteger _totalCost;

    NSUInteger _totalCount;

    _YYLinkedMapNode *_head; // MRU, 最常用节点,不要平昔改变它

    _YYLinkedMapNode *_tail; // LRU, 最常用节点,不要间接退换它

    BOOL _releaseOnMainThread; // 对应 YYMemoryCache 的 releaseOnMainThread

    BOOL _releaseAsynchronously; // 对应 YYMemoryCache 的 releaseAsynchronously

- (void)insertNodeAtHead:(_YYLinkedMapNode *)node;

- (void)bringNodeToHead:(_YYLinkedMapNode *)node;

- (void)removeNode:(_YYLinkedMapNode *)node;

- (_YYLinkedMapNode *)removeTailNode;

- (void)removeAll;

}

  • jsonKit:(UIButton *State of Qatarsender {//获取文件路线NSString * filepath = [[NSBundle mainBundle]pathForResource:@"message.txt" ofType:nil ];//2.转换归入数据NSData * fileData = [NSData dataWithContentsOfFile:filepath];NSArray * tempArray = [fileData objectFromJSONData];NSLog(@"%@",tempArray卡塔尔(قطر‎;//3.最早化数组,再用来选取模型对象self.dataArray = [NSMutableArray array];//遍历数组,抽出词典,然后经过KVC将词典当凉月素收取,放入self.dataArray中for (NSDictionary * dict in tempArray卡塔尔(قطر‎ {// 成立模型对象Message * message = [Message new];//通过KVC将辞典转变为模型对象[message setValuesForKeysWithDictionary:dict];[self.dataArray addObject:message];}//测试[self.dataArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {NSLog(@"%@ %@ %@ %@",[obj sender],[obj receiver],[obj content],[obj data]);}];

字符串、 数组、 辞书 和 数据 这六种类型,系统提供了 writeToFile: 直接写入文件的方法, 由此能够直接存款和储蓄数据到沙盒中。

在上头的代码中,大家来看了YYKVStorage,YYDiskCache是由此YYKVStorage来操作缓存对象(sqlite/file),YYKVStorage 和 YYMemoryCache 中的双向链表 _YYLinkedMap扮演的剧中人物是相符的,而对应于 _YYLinkedMap 中的节点 _YYLinkedMapNode,YYKVStorage 中也是有三个类 YYKVStorageItem 当作着与缓存对象的角色。

  • jsonKit:(UIButton *State of Qatarsender;//存款和储蓄模型对象:@property(nonatomic,strong卡塔尔国NSMutableArray * dataArray;@end

objc/runtime 完毕归档反归档
笔者们须要用到 动态运转时类库中的以下几类别型、函数 来得到属性名,属性类型。

           1. 新数据插入到链表头部;

@end

            完毕简单。

@interface ViewController ()

// 归档的前提:被归档的靶子急需坚决守住编码公约,并落实相应措施
@interface Person : NSObject <NSCoding>

  _YYLinkedMapNode 作为双向链表节点,除了核心的 _prev、_next,还会有键值缓存基本的 _key 与 _value,我们得以把 _YYLinkedMapNode 通晓为 YYMemoryCache 中的三个缓存对象。_YYLinkedMap 作为由 _YYLinkedMapNode 节点组成的双向链表,使用 CFMutableDictionaryRef _dic 词典存款和储蓄 _YYLinkedMapNode。那样在确定保证 _YYLinkedMapNode 被强援用的还要,能够使用词典的 Hash 急忙稳固客户要拜望的缓存对象,那样既顺应了键值缓存的定义又节省了投机完成的劳动。总得来说YYMemoryCache 是因而选取 _YYLinkedMap双向链表来操作 _YYLinkedMapNode 缓存对象节点的。

2.Message.h@interface Message : NSObject@property(nonatomic,copy)NSString * sender;@property(nonatomic,copy)NSString * receiver;@property(nonatomic,copy)NSString * content;@property(nonatomic,copy)NSString * data;3.Message.m//防崩-setValue:value forUndefinedKey:(NSString *)key{

  • 获得到种种属性类型,就能够 依照项目对品质举办编码。

  • 收获到每一种属性名, 就可以在编码的时候增添 标志。

  • 有了标识 和 属性类型,就足以正确的解码。

YYDiskCache 内部是依照四个单例 NSMapTable 管理,

1.message.txt[ {"sender":"小花","receiver":"小新","content":"朝阳花的微笑永世只为太阳而笑","data":"前年11月1日"},{"sender":"小花","receiver":"小新","content":"不积硅步何以致千里","data":"前年一月2日"}]

@property (nonatomic,assign) NSInteger age; // 年龄integer类型
@property (nonatomic,copy) NSString *name; // 姓名,oc对象类型
@property (nonatomic,strong) UIImage *image; // 图片,UIImage类型

@interface YYDiskCache : NSObject

#pragma mark - Attribute

@property (nullable, copy) NSString *name; // 缓存名称,默以为 nil

@property (readonly) NSString *path; // 缓存路线

@property (readonly卡塔尔(قطر‎ NSUInteger inlineThreshold; // 阈值,大于阈值则存款和储蓄类型为 file;不然存款和储蓄类型为 sqlite

@property (nullable, copy) NSData *(^customArchiveBlock卡塔尔国(id object卡塔尔国; // 用来替换 NSKeyedArchiver,你能够动用该代码块以匡助未有 conform `NSCoding` 左券的指标

@property (nullable, copy) id (^customUnarchiveBlock)(NSData *data卡塔尔; // 用来替换 NSKeyedUnarchiver,你能够采纳该代码块以支撑未有 conform `NSCoding` 合同的靶子

@property (nullable, copy) NSString *(^customFileNameBlock)(NSString *key卡塔尔; // 当二个对象将以 file 的花样保留时,该代码块用来变化钦点文件名。倘若为 nil,则默许使用 md5(key卡塔尔国 作为文件名

#pragma mark - Limit

@property NSUInteger countLimit; // 缓存对象数量节制,私下认可无界定,超越约束则会在后台逐出一些指标以知足限定

@property NSUInteger costLimit; // 缓存开支数量节制,私下认可无界定,当先限制则会在后台逐出一些对象以满足限定

@property NSTimeInterval ageLimit; // 缓存时间范围,默许无界定,超过约束则会在后台逐出一些对象以满足限定

@property NSUInteger freeDiskSpaceLimit; // 缓存应该保留的渺小可用磁盘空间(以字节为单位),暗中认可无界定,当先限制则会在后台逐出一些对象以满意约束

@property NS提姆eInterval autoTrimInterval; // 缓存自动清理时间隔断,暗中认可 60s

@property BOOL errorLogsEnabled; // 是不是开启错误日志

#pragma mark - Initializer

- (nullable instancetype)initWithPath:(NSString *)path

                      inlineThreshold:(NSUInteger)threshold NS_DESIGNATED_INITIALIZER;

- (BOOL)containsObjectForKey:(NSString *)key;

- (nullable id)objectForKey:(NSString *)key;

- (void)setObject:(nullable id)object forKey:(NSString *)key;

- (void)removeObjectForKey:(NSString *)key;

- (void)removeAllObjects;

- (NSInteger)totalCount;

- (NSInteger)totalCost;

#pragma mark - Trim

- (void)trimToCount:(NSUInteger)count;

- (void)trimToCost:(NSUInteger)cost;

- (void)trimToAge:(NSTimeInterval)age;

#pragma mark - Extended Data

+ (nullable NSData *)getExtendedDataFromObject:(id)object;

+ (void)setExtendedData:(nullable NSData *)extendedData toObject:(id)object;

@end

}

  • 据他们说 属性类型,对质量举办编码。

  • 加多编码 标识,(秉着 见名知意的条件 标识值与属性名相同)。

  • (nullable instancetype)initWithCoder:(NSCoder *卡塔尔aDecoder 解码方法里面做的操作

  • 凭借 属性类型 以至 编码时加的 标记, 举办解码。

  • 解码完毕后,给 属性赋值(可以应用 kvc 赋值方法)。

sqlite: 对于小数目(例如 NSNumber)的存取功效分明超过 file。

}4.ViewController.m

咱俩在 NSCoding 的说道章程里面做的操作如下:

下面收拾了多少个常用的办法,做了简便的国语注释,从代码中我们得以看看 YYCache 中负有 YYMemoryCache 与 YYDiskCache,并且对外提供了部分接口。那几个接口基本都以依赖 Key 和 Value 设计的,近似于 iOS 原生的词典类接口(增加和删除改查)

Person 类,完成 NSCoding 合同章程。
编码方法,归档时触发。

@interface YYCache : NSObject

/** 缓存名称 */

@property (copy, readonly) NSString *name;

/** memoryCache*/

@property (strong, readonly) YYMemoryCache *memoryCache;

/** diskCache*/

@property (strong, readonly) YYDiskCache *diskCache;

/**剖断key是不是存在*/

- (BOOL)containsObjectForKey:(NSString *)key;

/**认清key是不是存在,并实践block*/

- (void)containsObjectForKey:(NSString *)key withBlock:(nullable void(^)(NSString *key, BOOL contains))block;

/**收获key值对应的靶子 会窒碍调用的历程*/

- (nullable id)objectForKey:(NSString *)key;

/** 获取key值对应的靶子,并实施block*/

- (void)objectForKey:(NSString *)key withBlock:(nullable void(^)(NSString *key, id object))block;

/** 对某些key设置对象,梗塞线程*/

- (void)setObject:(nullable id)object forKey:(NSString *)key;

/** 设置key的对象,线程会立时赶回,设置成功后回调block*/

- (void)setObject:(nullable id)object forKey:(NSString *)key withBlock:(nullable void(^)(void))block;

/**删去key对应的指标 堵塞线程 */

- (void)removeObjectForKey:(NSString *)key;

/**删去key对应的object 线程会立时回去,删除成功后回调block*/

- (void)removeObjectForKey:(NSString *)key withBlock:(nullable void(^)(NSString *key))block;

/**清空缓存*/

- (void)removeAllObjects;

/** 清空缓存, 线程会登时赶回,清空成功后回调block */

- (void)removeAllObjectsWithBlock:(void(^)(void))block;

/**清空缓存, 线程会立刻回去,后台线程实施block*/

- (void)removeAllObjectsWithProgressBlock:(nullable void(^)(int removedCount, int totalCount))progress  endBlock:(nullable void(^)(BOOL error))end;

ifdef LP64

int space                                                          OBJC2_UNAVAILABLE;

            命中时须要遍历链表,找到命中的多少块索引,然后供给将数据移到底部。

代表类中的实例变量的一种档案的次序。原项目为 struct objc_ivar *。

郑重声明:本文版权归新匍京a奥门-最全网站手机版app官方下载所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。