
Objective-C
高冷的钢背兽
iOS开发&前端开发
展开
-
iOS 模型排序之NSSortDescriptor
排序规则描述类: NSSortDescriptorNSSortDescriptor来指定排序规则, 对集合等进行排序时指定结果的排序规则; 可以对一个类的某个属性(下文中方法中的key参数)指定排序规则; 可以对一个字符串集合进行指定排序规则,把参数key赋值为nil就行。NSSet、NSArray、NSOrderedSet、NSMutableArray、NSMutableOrderedSet均有相应方法使用,参数都是包含NSSortDescriptor的数组, 意味着我们可以同时指定多条规.原创 2020-11-11 10:14:16 · 608 阅读 · 0 评论 -
iOS NSTimer内存泄露
当你在ViewController(简称VC)中使用timer属性,由于VC强引用timer,timer的target又是VC造成循环引用,如果不处理,VC的dealloc并不会走,造成内存泄露,如图。解决方法:一:在ViewController执行dealloc前释放timer,这种方法有点low,不推荐。比如在viewWillDisappear中销毁timer,self.time = [NSTimer scheduledTimerWithTimeInterval:...原创 2020-10-13 17:49:50 · 428 阅读 · 0 评论 -
duplicate symbols for architecture arm64
升级Xcode12,用Pod更新三方库之后报这个错。是项目里有相同文件,展开之后发现问题1:友盟的统计,然后查看官方文档,发现是UMCCommon已经集成了统计相关的代码,所以不需要这个framework了,所以更新之后,有两个这个framework。删点这个,只保留UMCCommon即可。问题2:高德地图,之前同时引入了3D地图和导航SDK,不会报错,现在不行,用Pod删掉3D地图即可...原创 2020-09-23 18:07:49 · 983 阅读 · 0 评论 -
IPA processing failed
Xcode11今天打包报这个问题这是因为项目使用的SDK如framework支持i386,x86_86这个架构,iOS13强制不支持模拟器架构打包。第一步,点击Show logs第二步,打开这个log第三步,搜索x86_64,搜索结果上一行,有一个framework路径的,就是需要修改的第四步,复制framework名字,到xcode搜一下,sho...原创 2020-03-28 10:11:47 · 4406 阅读 · 1 评论 -
iOS 各版本系统占比
iOS10以下设备占比已不足0.5%数据更新于2019.10月查询地址:查询链接原创 2019-10-25 10:43:37 · 2275 阅读 · 0 评论 -
iOS iPhone屏幕参数
设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS ...原创 2017-05-18 11:15:07 · 698 阅读 · 0 评论 -
iOS 允许HTTP请求
增加 App Transport Security Settings dictionary类型 在里层增加 Allow Arbitrary Loads bool 类型 为YES原创 2017-05-18 14:11:31 · 8610 阅读 · 0 评论 -
iOS UIAlertController
UIAlertController从iOS8开始广泛使用,基本使用代码如下: UIAlertController *alt = [UIAlertController alertControllerWithTitle:@"title" message:@"message" preferredStyle:UIAlertControllerStyleAlert]; [alt add原创 2017-05-19 13:28:55 · 417 阅读 · 0 评论 -
iOS 清除缓存封装
/* Document文件夹: 用来保存应由程序运行时生成的需要持久化的数据, iTunes会自动备份该目录(苹果公司建议将程序中创建的和浏览过的程序存放在这里,iTunes在备份和回复时会自动包含此目录)。 获取方法: //文件路径是数组,这里取第一个元素 NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDo原创 2017-05-22 17:31:02 · 480 阅读 · 0 评论 -
iOS Pointer is missing a nullability type specifier (__nonnull or __nullable)
当我们定义某个属性的时候 如果当前使用的编译器版本比较高(6.3+)的话经常会遇到这样的警告而且奇怪的是在某些文件中定义这个属性是没有任何警告的 但是在某些文件中定义同样的属性就会报错:其实这是由于Swift的加入引起的问题:我们都知道在swift中,可以使用!和?来表示一个对象是optional的还是non-optional,如view?和view!。而在Objective-C原创 2017-05-24 15:03:20 · 1091 阅读 · 0 评论 -
iOS 中文转拼音
调用- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSLog(@"%@",[self getPinyinWithString:@"卡卡西 kaka"]); NSLog(@"%@"原创 2017-06-15 16:32:23 · 443 阅读 · 0 评论 -
iOS 冒泡排序研究
最近重新看了下冒泡排序算法代码: NSMutableArray *numarr = [NSMutableArray arrayWithObjects:@1,@3,@2,@5,@4, nil]; for (int i = 1; i<numarr.count; i++) { for (int j = 0; j<numarr.count - 1;原创 2017-03-22 16:04:24 · 458 阅读 · 0 评论 -
iOS 贝塞尔曲线简单使用
UIBezierPath只能写在UIView相关类里才能绘制出来绘制一个矩形: UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(20, 100 50, 50) cornerRadius:5]; [[UIColor blueColor] set];原创 2017-06-15 16:42:11 · 422 阅读 · 0 评论 -
iOS UITextView 光标位置
text.textContainer.lineFragmentPadding = 0 text.textContainerInset = UIEdgeInsets.init(top: 2, left: 0, bottom: 0, right: 0)text是UITextView原创 2017-09-22 13:14:43 · 1946 阅读 · 0 评论 -
iOS 开发者的公司账号与个人账号之间的区别
苹果对开发者主要分为3类:个人、组织(公司、企业)、教育机构。即:1、个人(Individual)2、组织(Organizations)组织类又分为2个小类:(1)公司(Company)(2)企业(Enterprise)3、教育机构(Educational Institutions)更多内容介绍,请看苹果官方说明:Choosing a Membership我们经原创 2017-05-17 16:57:35 · 2157 阅读 · 0 评论 -
iOS 颜色生成image
UIButton设置背景图片时,是需要一张图片才可以。但是我又想直接通过UIColor来设置,那怎么办?该方法是可以将UIColor转化成UIImage对象 +(UIImage*) createImageWithColor:(UIColor*) color { CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f)原创 2017-05-08 11:21:24 · 2890 阅读 · 0 评论 -
iOS 网络错误view封装
封装一个网络请求失败的view ,有一个重新加载按钮,点击重新走网络请求新建一个继承于UIView的类.h文件#import typedef void (^ButtonBlock) (id sender);@interface XSNoDataView : UIView- (void)addButtonAction:(ButtonBlock)block;@end.m原创 2017-03-13 16:08:30 · 484 阅读 · 0 评论 -
iOS 使用KeyChain保存数据
一般情况下,可以用NSUserDefaults存储数据信息,但是对于一些私密信息,比如账号、密码等等,就需要使用更为安全的keychain了。而Keychain的信息是存在于每个应用(app)的沙盒之外的,所以keychain里保存的信息不会因App被删除而丢失,在用户重新安装App后数据还在。新建一个类,取名JJKeyChain,如下:#import #import #defin原创 2017-03-23 14:13:55 · 1789 阅读 · 0 评论 -
iOS UDID UUID 广告标识符的区别
NSString *UUID = [[NSUUID UUID] UUIDString]; //通过运行程序可以发现,循环10次,每一次打印的值都是不一样的,当然循环的再多,这个值永远不会出现两个一样的值。所以从某种程序上来说,UUID跟你的设备没有什么关系了。也就是说,没有什么卵用 NSString *Str1 = [[[ASIdentifierManager原创 2017-03-23 15:31:01 · 1039 阅读 · 0 评论 -
iOS Block弱引用
先weak再strong.可以很好的管理Block内部对self的引用常规写法 __weak typeof(self) weakSelf = self; self.Button.rac_command = [[RACCommand alloc] initWithEnabled:textSig signalBlock:^RACSignal *(NSString * input)原创 2017-03-14 17:36:31 · 2464 阅读 · 0 评论 -
iOS 常用宏定义Macros
新建一个.h文件,把自动生成的代码删掉,把下面的代码复制进去,导入头文件到pch,就可以用了//// JJMacros.h// test2.7//// Created by muzhong on 2017/3/14.// Copyright © 2017年 muzhong. All rights reserved.//#import // for mach_abso原创 2017-03-14 17:46:03 · 1414 阅读 · 0 评论 -
iOS AsyncDisplayKit简介
AsyncDisplayKit的基本使用单元是node. ASDisplayNode是一个UIView层之上的封装,就像UIView是对CALayer的封装一样。跟View不一样的是,node是线程安全(比如uiview的操作就不是线程安全的,在非UI线程无法操作UIView)的,就是说你在非主线程对node进行初始化以及配置它们的层级操作都是安全的。为了让用户界面平滑并且随时可以相应,a原创 2017-03-08 17:58:00 · 731 阅读 · 0 评论 -
iOS 时间戳转日期
新建一个NSObject类+(NSString *)timeConvert:(NSString *)dataString{ NSDateFormatter* formatter = [[NSDateFormatter alloc]init]; [formatter setDateStyle:NSDateFormatterMediumStyle]; [formatter原创 2017-03-15 17:41:54 · 1110 阅读 · 0 评论 -
iOS友盟做第三方登录和分享注意事项
利用友盟SDK设置三方登录的注意事项原创 2016-03-24 10:44:22 · 8558 阅读 · 0 评论 -
iOS 自定义柱状图
源代码#import "ViewController.h"@interface ViewController ()@property (nonatomic,strong)CAShapeLayer *shapeLayer;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];原创 2017-04-21 11:12:34 · 2926 阅读 · 0 评论 -
iOS plist路径读取
直接拖进工程的plist文件可能没有加入到Bundle Resource中,需要手动添加一下swift 把数据写进plist文件中,有时候需要把后台返回的数据保存的时候,可以这么操作let array = NSArray(objects: "hangge.com","baidu.com","google.com","163.com","qq.com")let filePath:Strin原创 2017-10-10 20:51:13 · 3182 阅读 · 0 评论 -
iOS 设置相机按钮语言
在调用系统的相机和图库界面时,默认的一般都是英文的提示,比如“cancel”、“select”, 只要将plist中的:Localization native development region 的en修改成China即可 当然不止相机界面,比如textField和textview的全选、复制选项也会因此而更改。原创 2017-10-16 17:36:05 · 842 阅读 · 0 评论 -
iOS nvalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoop
在iOS10会崩溃,iOS 11、12 没事找了半天是观察者没有在dealloc里移除,坑爹添加观察者的时候,千万别忘了移除例如- (void)dealloc{ [self.wkWebView.scrollView removeObserver:self forKeyPath:@"contentSize"];}...原创 2019-06-21 16:53:54 · 640 阅读 · 0 评论 -
iOS 自动下沉
if (@available(iOS 11.0, *)) { self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } else { [self setAutomaticallyAdjustsScrollViewInsets:fa...原创 2019-06-18 18:02:57 · 352 阅读 · 0 评论 -
iOS 统计代码行数
打开终端cd 到项目所在目录包含空行和注释find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs wc -l 回车,执行这条指令是获取每个文件内的代码行数,并在最后统计出一共的代码行数。不包含空行,包含注释find . -name "*.m" -or -name "*....原创 2019-06-27 09:57:55 · 437 阅读 · 0 评论 -
iOS Label行距
调整label行距需要用label的attributedText属性,不需要用text属性了,如下: NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:newString]; NSMutableParagraphStyle...原创 2019-07-12 10:35:15 · 663 阅读 · 0 评论 -
iOS 按钮渐变色
_signBtn = [UIButton buttonWithType:UIButtonTypeCustom]; _signBtn.layer.cornerRadius = 20; _signBtn.layer.masksToBounds = YES; _signBtn.frame = CGRectMake(70, 200, kScreen_Wi...原创 2019-08-16 13:55:29 · 1289 阅读 · 0 评论 -
Xcode11 iOS13问题汇总
问题一:报错 Multiple methods named 'numberOfItemsInSection:' found with mismatched result, parameter type or attributes这个问题是由于二维数组取值时,编译器不知道是什么对象,调用对象的方法会报错,在Xcode之前的版本没有问题,解决方法是,告诉编译器是什么类型,我的是UICollecti...原创 2019-08-28 10:07:48 · 11902 阅读 · 2 评论 -
iOS 计算得到NaN
程序闪退,发现是计算得到了NaN,Not a Number情况如下:1.小数的除法运算中,分母为0。2.对负数进行开平方根运算。3.其他数学函数的不正确运算,例如0乘以一个无穷大的数。所以在运算的时候最好先判断一下分母是否为0,最后结果也可以用isnan(X)方法来判断...原创 2019-09-05 18:08:12 · 2465 阅读 · 0 评论 -
Xcode11 没有Application Loader的问题
之前一直都用Application Loader上传包,升级xcode11之后发现没有了,解决方法如下:1.还有旧版本Xcode,在Finder里应用程序找到xcode,右键显示包内容,在contents/Applications里找到Application Loader。复制到新版本xcode相同位置,重启xcode就可以了如果没有旧版本Xcode,链接: https://pan.b...原创 2019-10-10 09:51:20 · 9185 阅读 · 0 评论 -
iOS dissmiss多级
UIViewController *rootVC = self.presentingViewController; while (rootVC.presentingViewController) { rootVC = rootVC.presentingViewController; } [rootVC dismissViewControllerAnimated:YES compl...原创 2019-06-05 14:12:39 · 500 阅读 · 0 评论 -
iOS MapFileParser.sh: No such file or directory
iOS集成unity 3D 项目报错是因为Build Phases里的Run Script 设置的路径不对,在项目左侧文件Show in Finder,查看到正确位置,并设置就可以了。例如我的:...原创 2019-05-05 16:20:14 · 1623 阅读 · 0 评论 -
iOS 判断是否在主线程
有时候我们需要验证当前在哪个线程,如下: if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(dispatch_get_main_queue())) == 0) { // do something in main thread ...原创 2019-04-18 11:27:13 · 6003 阅读 · 0 评论 -
iOS 获取模拟器上的沙盒路径
在工程里写上如下代码,打印出来 NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSLog(@"caches:%@",caches); //caches:/Users/soul原创 2017-12-21 19:40:33 · 2694 阅读 · 0 评论 -
iOS 点击复制文字
在按钮点击事件中实现如下代码即可 UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = self.url;原创 2017-12-16 18:21:49 · 1649 阅读 · 0 评论