- 博客(547)
- 资源 (13)
- 收藏
- 关注
原创 OC UIDatePicker显示24小时制
self.datePicker.datePickerMode = UIDatePickerModeTime;self.datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
2020-06-08 10:05:54 344
原创 OC 开发之NSLog使用技巧
前提:在XCode做开发调试时往往需要打印一些调试信息做debug用,大家知道当打印信息的地方多了之后在模拟器上跑可能不会有什么问题,因为模拟器用的是电脑的硬件但是当应用跑在设备上时这些输出语句会在很大程度上影响应用的性能,针对这种问题可以写一些宏来控制这些调试信息的输出。在release版本禁止输出NSLog内容因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉。我们可以在发布版本前先把所有NSLog..
2020-06-08 10:04:51 570
原创 OC tableView左滑删除的两种方法
第一种- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { //第二组可以左滑删除 if (indexPath.section == 2) { return YES; } return NO;} // 定义编辑样式- (UITableViewCellEditingStyle)tableView:(UITabl
2020-06-04 10:51:51 1264
转载 iOS 13那些默默无闻的坑
引言关于iOS 13适配,有非常多写的很不错的文章,本文主要讨论iOS 13对于蓝牙开发其中一个影响下面是一个小编认为关于iOS 13适配写得毕竟详细得文章,以供参考iOS 13适配正题蓝牙开发中,从蓝牙设备获取到的数据,都是以NSData的形式接收,有的时候需要将NSData数据转换为对应的十六进制字符串进行操作。例如,定义设备名称为厂商数据的某一个位置开始的N个字节方案一将NSData利用initWithData:encoding:将数据用UTF8解码转换成字符串.
2020-06-03 16:28:17 337
原创 OC 操作可变数组中的元素
//先删除,再插入- (void)removeObjectAtIndex:(NSUInteger)index;- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index;Product *message = (Product*)[notification object];Product *prod = nil;for(int i = 0; i < ProductList.count; i++){ .
2020-06-02 18:02:18 1086
原创 OC 十六进制转换为二进制
//十六进制转换为二进制+ (NSString *)getBinaryByHex:(NSString *)hex { NSMutableDictionary *hexDic = [[NSMutableDictionary alloc] initWithCapacity:16]; [hexDic setObject:@"0000" forKey:@"0"]; [hexDic setObject:@"0001" forKey:@"1"]; [hexDic setObject:.
2020-06-02 17:51:49 525
原创 OC performSelector和传递参数
performSelector和直接调用方法的区别performSelector: withObject:是在iOS中的一种方法调用方式。他可以向一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以这也是runtime的一种应用方式。所以performSelector和直接调用方法的区别就在与runtime。直接调用编译是会自动校验。如果方法不存在,那么直接调用 在编译时候就能够发现,编译器会直接报错。但是使用performSelector的话一定是在运行时候才能发现,如果此方...
2020-06-01 10:13:09 2265
原创 OC AFNetWorking中block执行完后再执行其它操作
需求:同时进行两次网络请求,网络请求是异步的,在网络请求成功后进行其它的操作。两个网络请求是这样,一个网络请求中block执行完之后,再进行其它操作,也是一样的原理,只是这时候不需要线程组了,只需要信号量。当然也适用于所有的block。接下来就说下,在两次异步请求之后要做的操作。利用线程组和信号量来完成,看代码- (void)getData{ NSString *appIdKey = @"8781e4ef1c73ff20a180d3d7a42a8c04"; NSString*
2020-06-01 09:59:20 458
原创 OC 生成UUID
+ (NSString *)uuidString{ CFUUIDRef uuid_ref = CFUUIDCreate(NULL); CFStringRef uuid_string_ref= CFUUIDCreateString(NULL, uuid_ref); NSString *uuid = [NSString stringWithString:(__bridge NSString *)uuid_string_ref]; CFRelease(uuid_ref); .
2020-06-01 09:58:06 1268
原创 OC 开发时间控件强制24小时制
1)当你的format格式是NSDateFormatter*dateFormatter=[[[NSDateFormatteralloc]init]autorelease];[dateFormattersetDateFormat:@"yyyy-MM-ddHH:mm:ss"];//这里是用大写的HNSString*dateStr=[dateFormatterstringFromDate:date];你获得就是24小时制的。2)当你的format格式用的是[d...
2020-06-01 09:56:32 447 1
原创 OC 时间的几个函数及格式化时间
//// main.m// 时间格式化//// Created by Macro on 14-12-10.// Copyright (c) 2014年 Macro. All rights reserved.// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //返回当前时间,以GM..
2020-06-01 09:55:10 349
原创 OC 获取当前日期是周几
+(NSInteger)getWeekDayFordate { NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *comps = [[NSDateComponents alloc] init]; NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalend.
2020-06-01 09:54:09 625
原创 OC 圆弧渐变进度条的实现
由于项目需要一个环形渐变进度条显示课程,这方便网上的确有很多相关资料但是,都是比较零散的而且,大多数只是放一堆代码就算完了。这里我想详细写一篇我自己实现这个进度条的过程。实现一个圆弧进度条主要分为三步一、画圆弧这里用的贝赛尔曲线,就是这个东西:UIBezierPath二、根据贝塞尔曲线路径画两个圆弧一个底色一个上面的填充色,用到的是这个类CAShapeLayer.h三、画两个渐变色块,把上面的进度条路径映射到渐变色块上,渐变色块用的是这个东西CAGradientLayer.h目标效果如图
2020-06-01 09:50:11 955
原创 OC 错误 “property follows cocoa naming convention for returning owned objects”
这两天都遇到这个错误2次了 第一次是 创建了一个 newpassword的textField属性 第二次是 申明了一个 类的对象 copyStateVC;property follows cocoa naming convention for returning 'owned' objects查了一番,终于知道原因:命名不规范 ,属性不能以关键字符开头。记得以前刚学OC的时候看到过,不能以alloc,new,copy,mutableCopy 作为开头命名,比如:newPassword,小细节没...
2020-05-31 13:52:31 1366
原创 OC NSArray NSMutableArray 创建 添加 查询 复制 遍历等
NSArray说明-oc中枚举就是遍历的意思,区别c语言中的枚举-Foundation中的数组(NSArray,NSMutableArray)是一组有序的对象集合-数组只能存储对象(类的实例)NSArray使用-通过下标获取到数组中的各个元素-与字符串相同,数组分为可变和不可变数组NSArray注意-数组中不可以存放基本数据类型,只能存放类的实例(对象)-如若需要将基本数据类型/结构体放入数组中,需要通过NSNumber NSValue进行“封装”NSArray实例.
2020-05-28 11:43:55 416
原创 OC中延时方法总结
//延时方法1[self performSelector:@selector(task) withObject:nil afterDelay:1];//延时方法2NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(task1) userInfo:nil repeats:false];//延时方法4[NSThread sleepForTimeInterval:1.0];//延时方法4.
2020-05-28 11:43:40 540
原创 ld: 1 duplicate symbol for architecture x86_64的错误
duplicate:重复的,复制的symbols:符号出现的原因:1.工程中重复倒入某一类或文件,这一般出现在你添加第三方库的时候比较多,在不知道的情况下又导入了一次相同的类。2.就是倒入类的时候,引用的是.m而不是.h3.项目中用了一个 C 语言的枚举类型定义方式,会导致重复闯将4.项目中使用c的时候,参数声明使用const2个人认为,因为const声明的是常量,static声明的是静态变量(只声明一次),所以我们在引用的时候,引用一次是没问题的,而引用多次,con
2020-05-28 11:42:12 4180
原创 OC NSInteger 和 NSNumber
Objective-C 支持的类型有两种:基本类型和类。基本类型,如同 C 语言中的 int 类型一样,拿来就可以直接用。而类在使用时,必须先创建一个对象,再为对象分配空间,接着做初始化和赋值。类的初始化,需用类自身的方法(类方法)。代码中所创建的对象,不用后,还得记着释放。NSNumber 是类,而 NSInteger 只不过是个基本类型。既然 NSInteger 是基本类型,那么,使用起来就非常简单。声明一个变量,NSInteger myInt;直接赋值就可以了。 比如:myInt = 8;谈到
2020-05-27 18:08:40 828
原创 oc 10进制转16进制字符串
//10进制转16进制字符串NSString *hexString= [NSString stringWithFormat:@"%@",[[NSString alloc] initWithFormat:@"%1lx",20]];
2020-05-27 18:05:39 377
原创 OC中static关键字作用
static关键字可以修饰函数和变量,作用如下:一、隐藏通过static修饰的函数或者变量,在该文件中,所有位于这条语句之后的函数都可以访问,而其他文件中的方法和函数则不行;二、静态变量类方法不可以访问实例变量(函数),通过static修饰的实例变量(函数),可以被类方法访问;三、持久static修饰的变量,能且只能被初始化一次;四、默认初始化static修饰的变量,默认初始化为0;...
2020-05-27 18:04:56 929
原创 OC 获取当前时间
//获取标准时间NSDate *date = [NSDate date];NSLog(@"直接使用NSDate获取的时间:%@", date);//使用formatter格式化后的时间NSDateFormatter *formatter = [[NSDateFormatter alloc] init];[formatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];NSString *time_now = [formatter stringFromDate:d.
2020-05-27 18:03:05 1534
原创 从AFNetworking中获取error中后台返回的错误信息
-在项目接口请求中,出现参数忘记带了的情况,后台直接返回400,在error中,后台可能有返回错误信息,如何获取这错误信息呢//在AFNetworking方法error代码块中if ([error.domain isEqualToString:AFURLResponseSerializationErrorDomain]) { // server error id response = [NSJSONSerialization JSONObjectWithData:error.user
2020-05-27 10:50:51 643
原创 iOS开发 字符串倒序的两种方式,首尾互换
在面试中,经常被问到字符串倒序的面试题,下面提供两种简单的实现:第一种:- (NSString*)reverseWordsInString:(NSString*)oldStr{ NSMutableString *newStr = [[NSMutableString alloc] initWithCapacity:oldStr.length]; for (int i = (int)oldStr.length - 1; i >= 0; i --) { uni..
2020-05-26 15:02:49 840
原创 OC NSMutableString 可变字符串,拼接,删除,插入,替换
NSMutableString *str = [NSMutableString stringWithFormat:@"lanouhenan"];//对于可变字符串的增删改方法, 都是在原字符串基础上进行修改, 所以修改之后的原字符串的内容发生变化, 所以无需返回值//1 在原字符串基础上拼接Frank[str appendFormat:@"Frank"];NSLog(@"%@", str);//2 在原字符串基础上拼接Frank[str appendFormat:@"%@", .
2020-05-26 15:00:54 699
原创 OC中的二进制字符串转十六进制字符串
-(NSString*)twoConvertSixteen:(NSString*)string{ NSString* strTen =[NSString stringWithFormat:@"%lu", strtoul ( [stringUTF8String],0,2)]; int num = [strTen intValue]; NSString* sixTeenString = [NSString stringWithFormat:@"%x",num]; .
2020-05-26 14:39:09 544
原创 IOS应用防止按钮连续点击
在软件开发项目中,我们经常会碰到点击按钮发送网络请求,或者点击按钮进行页面之间的逻辑跳转。但是有时候遇到一些卡顿的话,用户可能会失去耐心,然后疯狂的点击,这时候就会多次调用按钮触发的方法。在某些特定的情景下会导致页面重复push或者重复发送网络请求。这样的问题既对用户体验有影响,而且还会一定程度上增加服务器的压力。下面详细讲解几种解决思路,有不完善的地方 希望大家能够纠正。1.在按钮的触发方法内部做处理首先创建一个按钮button@interface ViewController ()@
2020-05-25 17:50:21 1091
原创 iOS UIDatePicker的使用
一:UIDatePicker的介绍UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期、时间和持续时长的输入。日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作。你也可以对其进行定制,令其使用任何范围的日期。UIDatePicker这个类的对象让用户可以在多个车轮上选择日期和时间。iPhone手机上的‘时钟’应用程序中的时间与闹铃中便使用了该控件。使用这个控件时,如果你能配置
2020-05-25 17:45:15 5541
原创 时间选择器UIDatePicker的使用
UIDatePicker的介绍UIDatePicker这个类的对象让用户可以在多个车轮上选择日期和时间。iPhone手机上的‘时钟’应用程序中的时间与闹铃中便使用了该控件。使用这个控件时,如果你能配置正确,当用户滚动车轮到一个新的日期或者时间上时,利用UIControlEventValueChanged触发事件。UIDatePicker给出了倒计时模式,但是并没有实现相关事件。如果你使用该模式,必须在应用程序中设置一个NSTime对象,让倒计时中的时间不断减少。UIDatePicker的使用创建
2020-05-25 16:04:28 7964
转载 iOS 定时延迟任务执行
前言在iOS中延迟执行的需求很常见,比如我们在首页弹出一个可关闭的广告,我们需要图片加载完成或者UI加载完成以后才展示弹窗广告。我在这里总结一下在iOS中常用的一些延迟执行的方法。NSTimer定时器方法大家应该会首先想到,我们也经常用到,比如在发送验证码设置一个60s的倒计时。PS:NSTimer有8中创建方法,我以前整理过,移步参看《iOS-NSTimer的前世今生(NSTimer不同创建方式的区别)》。我这里提供一种方法作为示例:_myTimer = [NSTime...
2020-05-25 15:54:29 688
原创 iOS13.5 真机 调试包
调试包iOS 13.5iOS 13.4iOS 13.3 (将13.2拷贝,并重命名为13.3就可以了,感谢WinJayQ提供的方案)iOS 13.2iOS 13.1iOS 13.0链接:https://pan.baidu.com/s/1K96He3YEatXs6kk20hMXmw提取码: 7b3tTips: iOS 13.1.1(x) 第三位版本号变化为小版本,使用 iOS 13.1 的调试包即可如何导入调试包打开 Finder按下: Command⌘+Shift⇧+G输
2020-05-22 18:13:33 3590
原创 OC 10进制转16进制字符串
//10进制转16进制字符串NSString*hexString= [NSStringstringWithFormat:@"%@",[[NSStringalloc]initWithFormat:@"%1lx",20]];
2020-05-21 21:03:35 436
原创 OC URL编码和URL解码
URL编码是一种常见的编码方式,作用不多说,直接上代码。URL编码:- (NSString *)URLEncodedString { // CharactersToBeEscaped = @":/?&=;+!@#$()~',*"; // CharactersToLeaveUnescaped = @"[]."; NSString *unencodedString = self; NSString *encodedString = (NSString *)
2020-05-21 21:02:58 2322
原创 iOS中判断字符串是否为空
iOS中,有时候我们判断某个字符串是否为空,却发现判断不对,常见的是isEqualToString,但这有时候却发现不对,在这里记录下三种判断字符串是否为空的if ( string == nil || string == NULL )if ( [string isKindOfClass:[NSNull class]] )if ( [[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] len
2020-05-21 20:57:48 790
原创 NSNumber与int比较
1.比较NSNumber的大小2.-(BOOL) isEqualToNumber:3.- (NSComparisonResult)compare:(NSNumber*)otherNumber;学习过程1.比较概述<1>既然NSNumber都是数值型的封装,那么它们之间可以比较大小,<2>不可使用比较运算符来比较,如,不可用>, <…..2.NSNumber的实例方法:(BOOL)isEqualToNumber:(NSNumber*)num...
2020-05-21 10:21:34 486
原创 iOS页面跳转时传递model对象
我需要实现view1跳到view2的时候,把view1的一些数据传给view2思路:1.自定义一个bean类user,在view2实现user为一个成员变量。2.view1跳的时候把数据封装为user, 并且赋值给view2.user代码1. view2.h 声明成员变量@property (strong, nonatomic) User *user;2. view1View2 *view2 = [[View2 alloc] init];User *user =
2020-05-19 17:38:41 435
原创 OC UICollectionView的Cell左对齐
一、UICollectionViewFlowLayout 的使用首先初始化一个UICollectionViewFlowLayout对象:UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];对UICollectionViewCell的相关布局约束:// 最小行间距,默认是0layout.minimumLineSpacing = 5;// 最小左右间距,默认是10layou...
2020-05-19 14:47:54 1035
原创 iOS double、float 转 NSString的大坑
服务端给客户端返回数据一般使用 JSON 字符串,iOS 端一般会将 JSON 转成 Dictionary 使用。这是一个简单的 JSON 串:{"progress":64.4}值得注意的是 JSON 串被转换成 Dictionary 后会将基本数值类型转换成__NSCFNumber类型(私有类,其父类为NSNumber)。我要取出 progerss 的值显示在 label 上,可能这样写:label.text = [dict[@"progress"] stringValue];//
2020-05-18 14:21:02 2172
原创 OC 十进制 二进制 转换
// 十进制转二进制 + (NSString *)toBinarySystemWithDecimalSystem:(NSString *)decimal{ int num = [decimal intValue]; int remainder = 0; //余数 int divisor = 0; //除数 NSString * prepare = @""; while (true){ remainder = num%2;.
2020-05-18 13:56:24 696
原创 iOS字符串比较
在开发的过程中,经常遇到需要比较两个字符串,当然比较的方法很多,下面总结一下比较字符串的方法一.用C语言比较:strcmp函数char string1[] = "string!";char string2[] = "string!";if(strcmp(string1, string2) == 0){ NSLog(@"1");}C中一般都是操作单个字符,不像OC有字符串对象的概念,C中需要操作一串字符,就需要用到数组.二.用OC语言比较1.isEqualToSt.
2020-05-14 14:22:06 1729
转载 iOS--CocoaPods的安装与删除
CocoaPods应该是iOS最常用最有名的类库管理工具,绝大部分有名的开源类库,都支持CocoaPods,在我们iOS大部分应用当中都使用到了CocoaPods来管理第三方库,那具体有哪些用处呢?1、下载、更新、删除等管理第三方库2、提示更新第三方库3、下载库时自动完成系统配置4、demo是github提供的,都带有github地址 一、Cocoapods的安装 1、配置Ruby环境 要安装Cocoapods必须配置Ruby环境方可安装,打开终端先查查自己电脑当前Ruby源,
2020-05-14 10:33:51 865
Homework11.zip
2020-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人