
Objective-C
文章平均质量分 51
allanGold
这个作者很懒,什么都没留下…
展开
-
【iOS分类、关联对象】如何使用关联对象给分类实现一个weak的属性
objc_setAssociatedObject实际上存储的是WeakObjWrapper对象,对WeakObjWrapper对象产生强引用,WeakObjWrapper对象内部弱持有传递进去的值,保证在对象释放的时候,自动把值设置为nil,避免了崩溃;注意:在派生的子类,添加的实现dealloc的方法中,重新调用一下父类的dealloc保证原有的类的释放关系不被破坏;看以下测试代码,使用policy为OBJC_ASSOCIATION_ASSIGN的策略,会发生什么样的情况?1、通过中间对象的方式。原创 2024-02-06 17:12:32 · 1847 阅读 · 1 评论 -
【词云】iOS如何实现词云
词云效果原创 2023-03-07 18:22:02 · 417 阅读 · 0 评论 -
iOS 保留1位小数或者保留2位小数 不四舍五入
// 这是保留2位小数,并且不会四舍五入NSNumber *number = @(1.988888);NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];[formatter setPositiveFormat:@"###0.00"];formatter.maximumFractionDigits = 2;formatter.roundingMode = NSNumberFormatterRoundDown;NSLog.原创 2021-11-14 18:02:04 · 6345 阅读 · 0 评论 -
Objective-C调试debug内嵌工具包
https://github.com/Flipboard/FLEXhttps://github.com/square/PonyDebuggerhttps://github.com/HDB-Li/LLDebugTool原创 2019-11-08 10:40:10 · 230 阅读 · 0 评论 -
iOS isnan、abs、fabs、fabsf、ceilf、roundf、floorf
iOS isnan、abs、fabs、fabsf、ceilf、roundf、floorfisnan如果一个数是一个确定的数,那它就不是nan值如果一个数是无穷大,无穷小,那它就是nan值if (isnan(1)) { DLog(@"1是NAN");} else { DLog(@"1不是NAN");}absint abs(int i); // 处理i...原创 2019-10-30 18:48:52 · 1768 阅读 · 0 评论 -
自动生成iOS代码中的方法调用关系图
在日常的开发中经常需要阅读别人的代码,面对一份陌生而复杂的代码,常常要花很长的时间才能理清其中的逻辑关系。代码的逻辑通常是分割在多个方法之中,如果一开始就能获得各个方法之间的调用关系,对理解代码的逻辑肯定会有帮助。Xcode并不像Visual Studio那样有Code Map这样方便的插件,也没有找到其他趁手的第三方工具,如何能获得iOS代码中的调用关系图呢?对于这个问题我断断续续做了一些尝试,...转载 2019-04-10 16:22:15 · 1980 阅读 · 0 评论 -
iOS 方法调用的过程
https://blog.youkuaiyun.com/nathan1987_/article/details/76855326先看一道题:#import "RootVC.h"@interface NSObject (myTest)+ (void) testFunc;@end@implementation NSObject (myTest)-(void) testFunc{ N...转载 2019-04-10 16:16:27 · 880 阅读 · 0 评论 -
iOS严谨单例写法/可继承单例
https://blog.youkuaiyun.com/wangyanchang21/article/details/50996830转载 2019-04-10 10:34:11 · 242 阅读 · 0 评论 -
iOS 单例的正确姿势
staticHLTestObject*instance=nil;+(instancetype)sharedInstance{staticdispatch_once_tonceToken;dispatch_once(&onceToken,^{instance=[[[selfclass]alloc]init];...转载 2016-07-13 10:29:49 · 493 阅读 · 0 评论 -
获取一个NSDate的年日时分秒
iOS8之后 - (NSInteger)getMinuteOfDate:(NSDate *)date { //获取当前时间 NSDate *now = date; NSLog(@"now date is: %@", now); NSCalendar *calendar = [NSCalendar currentCalendar]; NSUInteger...原创 2019-01-08 19:43:16 · 541 阅读 · 0 评论 -
货币 数字处理 精确
NSDecimalNumberhttps://www.jianshu.com/p/25d24a184016 NSNumberFormatterhttps://a1049145827.github.io/2018/08/03/iOS中的数字字符串格式化/转载 2018-10-20 17:04:37 · 311 阅读 · 0 评论 -
自动解析代码并生成方法调用关系图 / 自动解析代码并生成类继承关系图 uml
https://github.com/L-Zephyr/Drafter工具git地址https://ruby.ctolib.com/article/wiki/64472解析drafterhttps://www.jianshu.com/p/e19aafbaddca 理论原理解析简书地址cd到库目录的上一层目录drafter -f ./库目录...原创 2019-04-10 16:25:07 · 6324 阅读 · 0 评论 -
iOS开发 - protocol中定义属性
https://www.jianshu.com/p/fdbee61fedebhttps://blog.youkuaiyun.com/wqt925497045/article/details/79264357转载 2019-05-05 11:03:28 · 1578 阅读 · 0 评论 -
单例宏
https://www.cnblogs.com/fangwenkai/p/5580073.htmlhttps://www.cnblogs.com/qingche/p/3587059.html转载 2019-05-05 11:13:03 · 167 阅读 · 0 评论 -
KVC中setValuesForKeysWithDictionary 崩溃问题
https://www.cnblogs.com/lomomiao/p/4995941.html这样子就会过滤掉给不存在的键值赋值,如果有个属性是id,而id本身就是系统自身关键字,不能够当做属性使用,怎么办?https://www.jianshu.com/p/6ed968158d36直接导致程序崩溃,解决方法就是,实现一个方法setValue:forUnd...转载 2019-05-14 14:21:59 · 392 阅读 · 0 评论 -
iOS 一个类只允许外部调用特定初始化方法来初始化(如何避免外部直接调用init方法初始化)
例如只允许调用- (instancetype)initWithName:(NSString *)name;NS_UNAVAILABLE :标记方法不可用。Xcode不会自动补全,并且代码中如果调用此方法,会编译报错。但是runtime依然可以调用到此方法。+ (instancetype)new NS_UNAVAILABLE;- (instancetype)init NS_UNAVA...转载 2019-05-10 15:30:08 · 1323 阅读 · 0 评论 -
操作文件(取固定结尾的文件路径)(同名文件覆盖)
//// ViewController.m// hhhhh//// Created by allan on 2019/5/24.// Copyright © 2019 allan. All rights reserved.//#import "ViewController.h"#import "YCDownloadDB.h"NSFileManager *__fm(v...原创 2019-05-25 00:25:17 · 520 阅读 · 0 评论 -
iOS 设计模式 以及一本书的源码
https://github.com/huang303513/Design-Pattern-For-iOShttps://github.com/apress/pro-objective-c-design-patterns-for-ios找源码的方式:https://www.apress.com/cn/book/9781430233305# 图书购买页 点击...转载 2019-06-07 10:17:21 · 550 阅读 · 0 评论 -
曲线救国之仿深拷贝
采用MJExtention提供的mj_JSONString来实现类似深拷贝的目的 SomeObjectClass *objCopy = [SomeObjectClass modelWithJSON:obj.mj_JSONString];原创 2019-09-27 10:28:50 · 252 阅读 · 0 评论 -
NSMutableArray用copy修饰的坑
用YYModel转model时采用copy修饰NSMutableArray属性会导致类型变成__NSFrozenArrayM,这个会导致调用NSMutableArray的编辑数组的实例方法崩溃采用strong修饰NSMutableArray属性会导致类型变成__NSArrayM...原创 2019-09-27 17:46:45 · 897 阅读 · 0 评论 -
ios 开发注释
https://blog.youkuaiyun.com/zeng_zhiming/article/details/68925543https://www.cnblogs.com/zyl910/archive/2013/06/07/objcdoc.html 行尾注释//!<转载 2018-09-20 10:27:45 · 257 阅读 · 0 评论 -
当在dealloc方法中移除KVO监听时,如何防止崩溃
- (void)dealloc { @try { [self.view removeObserver:self forKeyPath:@"frame"]; } @catch(NSException *exception) { NSLog(@"--%@", exception); }}注意...转载 2018-09-07 10:45:31 · 4372 阅读 · 0 评论 -
一些NSArray,NSDictionary,NSSet相关的算法知识
iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过。只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准确性),还需要了解其中所隐藏的算法知识。在项目当中使用集合类几乎是不可避免的,集合类的使用场景其实可以进行抽象的归类。大多数时候我们需要将若干个对象(object)暂时保存起来,以备后续的业务逻辑进行...转载 2017-02-10 10:38:03 · 375 阅读 · 0 评论 -
GCD死锁的理解
http://ios.jobbole.com/82622/转载 2017-02-19 16:35:00 · 783 阅读 · 0 评论 -
KVC详解
http://www.jianshu.com/p/45cbd324ea65转载 2017-02-21 08:50:10 · 506 阅读 · 0 评论 -
MRC内存管理
http://www.cnblogs.com/kenshincui/p/3870325.htmlhttp://www.jianshu.com/p/8b1ed04b3ba9http://blog.youkuaiyun.com/weiwangchao_/article/details/7376189http://www.cnblogs.com/seesea125/p/3175431.htmlhttp://blog...转载 2017-02-21 17:27:41 · 1383 阅读 · 0 评论 -
#import、#include、@import modules区别
原文地址:http://blog.youkuaiyun.com/leemin_ios/article/details/51208642关于Objective-C,Modules和AutolinkingOC自从Apple接手后,一直在不断改进。随着移动开发带来的OC开发者井喷式增加,客观上也要求Apple需要提供各种良好特性来支持这样一个庞大的开发者社区。iOS4时代的GCD,iOS5时代的ARC,iOS6时代...转载 2017-07-30 10:52:02 · 417 阅读 · 0 评论 -
当打印时有很多的参数要打应该怎么办?看一下NSString分行怎么做
- (NSString *)description{ return [NSStringstringWithFormat: @"\n\n\n" \ "enabled_remove_recent_session %d\n" \ "local_search_time_order_desc %d\n" \ ...转载 2017-08-28 10:40:28 · 399 阅读 · 0 评论 -
NSCalender 的用法 以及如何判断指定日期做什么操作 闹钟的例子
// NSDate *createDate = dic[NSFileCreationDate]; // NSDate * date = [NSDate date]; // if ([date timeIntervalSinceDate:createDate] > 7*24*60*60) { // return; // }...原创 2017-09-07 17:19:46 · 705 阅读 · 0 评论 -
ios系统宏
#import <Availability.h>/* * Copyright (c) 2007-2016 by Apple Inc.. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original C...转载 2018-01-26 14:22:46 · 1050 阅读 · 0 评论 -
疏忽的知识点
1、直接遍历字典,遍历到的是键值NSDictionary *dic =@{@"1":@"a",@"2":@"b"};for (NSString *keyin dic) { NSLog(@"值:%@", key);}输出如下值:1值:2原创 2017-02-09 09:44:19 · 286 阅读 · 0 评论 -
常用宏
http://www.jianshu.com/p/213b3b96cafe转载 2016-12-08 10:28:02 · 352 阅读 · 0 评论 -
OC中的一些编程写法--({"添加代码"}) 花括号用法
self.tableView.tableHeaderView = ({ UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 184.0f)]; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0...转载 2016-11-14 14:01:15 · 3027 阅读 · 0 评论 -
iOS如何为NSMutableArray添加KVO
在项目,可能会有需求需要监听 NSMutableArray 的变化,例如在可变数组中加入、删除或者替换了元素,我们需要根据这些变化来更新UI或者做其他操作。那么如何来监听呢?方法1,使用 mutableArrayValueForKey: 代理,这样,我们在获取定义的数组属性时不再使用其 getter 方法,而是通过代理方法获取数组属性后,再对数组进行增删改的操作。这是最简单高效的方法,使用...转载 2018-09-12 18:01:29 · 693 阅读 · 0 评论 -
iOS分类Category使用的思考
1、如果创建分类,只是为了重写原类的某个方法,那么创建了分类后,可以将分类的.h文件删除,只留.m文件。分类.m文件会被自动编译,编译后分类中的实现会覆盖原来的实现,故使用时只需要导入原类.h,不需要导入分类.h/或.m文件。2、如果创建分类,只是为了重写原来类的方法,那么也可以将多个分类的实现部分,统一放在一个WZCategory.m中,拖入项目中,会被自动编译。3、如果创建分类,是为了...转载 2018-07-31 11:33:57 · 314 阅读 · 0 评论 -
kvo观察实例变量怎么实现
https://www.cnblogs.com/YouXianMing/p/3902827.html如果将一个对象设定成属性,这个属性是自动支持KVO的,如果这个对象是一个实例变量,那么,这个KVO是需要我们自己来实现的.以下给出源码供君测试:Student.h 与 Student.m//// Student.h// SuperNotification//// Copyright (...转载 2018-05-08 16:26:29 · 499 阅读 · 0 评论 -
iOS GCD之dispatch_semaphore(信号量)
原文地址:https://blog.youkuaiyun.com/liuyang11908/article/details/70757534前言最近在看AFNetworking3.0源码时,注意到在 AFURLSessionManager.m 里面的 tasksForKeyPath: 方法 (L681),dispatch_semaphore不甚理解,经查原来是通过引入信号量(dispatch_semaphor...转载 2018-04-21 17:52:49 · 439 阅读 · 0 评论 -
小技巧,关于OC打印指针地址和arc下的retaincount
CFGetRetainCount((__bridge CFTypeRef)self : 打印retainCount打印指针的地址(不是指针指向对象的地址):NSLog(@"aStr指针内存地址:%x",&aStr);打印指针所指向对象的地址使用这个 :NSLog(@"aStr指针所指向对象的地址:%p",aStr);...转载 2018-04-21 10:42:14 · 1431 阅读 · 0 评论 -
iOS 开发中可能用到的一下C的数学函数
pow(X, Y)求X的Y次幂rand() ----随机数abs() / labs() ----整数绝对值 fabs() / fabsf() / fabsl() ----浮点数绝对值 floor() / floorf() / floorl() ----向下取整 ceil() / ceilf() / ceill() ----向上取整 round() / roundf() / roundl() ---...转载 2017-02-06 10:23:01 · 1149 阅读 · 0 评论 -
autorelease深度理解
参考:https://segmentfault.com/q/1010000000123664每个runloop中都创建一个Autorelease Pool,并在runloop的末尾进行释放, 所以,一般情况下,每个接受autorelease消息的对象,都会在下个runloop开始前被释放。也就是说,在一段同步的代码中执行过程中,生成的对象接受autorelease消息后,一般是不会在代码段执行完成...转载 2016-06-14 17:12:29 · 2095 阅读 · 0 评论