![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ios
lq_ios
正在学习中
展开
-
iOS GCD学习《二》
GCD学习《一》iOS GCD信号量的使用Swift中队列的创建public convenience init(label: String, qos: DispatchQoS = .unspecified, attributes: DispatchQueue.Attributes = [], autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency = .inherit, target: DispatchQueue? = nil)labe原创 2020-12-15 16:29:43 · 475 阅读 · 0 评论 -
Swift和Objective-C互相调用
在Swift 中使用Objective-C官方文档桥接文件桥接文件是一个在Swift中调用OC类或方法的通道。Swift在同模块内文件是可以相互调用的(不能模块之间调用是需要引入模块的),但是OC文件是需要引入头文件才能使用。在Swift中首次创建OC文件的时候,xcode会弹出一个窗口,询问是否要创建桥接文件。桥接文件默认的命名为 “项目名-Bridging-Header.h”。只需要将OC 的头文件在桥接文件中#import一下就可以在Swift中使用。如果在询问是否创建桥接文件的时候,没原创 2020-12-14 11:19:16 · 1723 阅读 · 0 评论 -
Swift和C语言的混合使用
C语言的类型和Swift类型的对应关系C语言的基本类型和Swift的对应关系C 类型Swift 对应类型别名boolCBoolBoolchar,unsigned charCChar, CUnsignedCharInt8, UInt8short, unsigned shortCShort, CUnsignedShortInt16, UInt16int, unsigned intCInt, CUnsignedIntInt32, UInt32l原创 2020-11-27 16:18:18 · 1384 阅读 · 0 评论 -
iOS GCD信号量的使用
什么是信号量信号量是一种特殊的变量,访问具有原子性。 当信号量大于0时执行wait操作信号量会减1, 当信号量为0是,程序会等待,直到信号量大于0时,才继续执行。我们可以使用信号量来解决线程之间的同步问题。iOS 中信号量的相关的方法dispatch_semaphore_t dispatch_semaphore_create(long value); 初始化一个值为value的信号量当传递的值等于0时,对与协调两个线程很有用,能够完成特定的事件。当传递的值大于0时,对与管理一个资源原创 2020-11-05 13:23:26 · 1358 阅读 · 0 评论 -
iOS performSelector方法总结
perfromSelector 的非延迟方法- (id)performSelector:(SEL)aSelector;- (id)performSelector:(SEL)aSelector withObject:(id)object;- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;底层实现 源码地址- (id)performSelector:(SEL)sel { if原创 2020-11-04 15:04:19 · 2244 阅读 · 0 评论 -
生成plist文件
#import @interface CreatePlist : NSObject@property(nonatomic,copy)NSString *plistName;//文件名@property(nonatomic,copy)NSString *path;//文件路径@property(nonatomic,strong)NSArray *dat原创 2016-03-15 21:01:58 · 670 阅读 · 0 评论 -
彻底解决_OBJC_CLASS_$_某文件名", referenced from:问题
1. .m文件没有导入 在Build Phases里的Compile Sources 中添加报错的文件 2. .framework文件没有导入静态库编译时往往需要一些库的支持,查看你是否有没有导入的库文件同样是在Build Phases里的Link Binary With Libraries中添加 3. 重复编译,可能你之前复制过两个转载 2016-02-25 20:54:39 · 1006 阅读 · 0 评论 -
OC修改文件夹的函数
+(BOOL)replaceTextInDirectory:(NSString *)directoryName oldString:(NSString *)oldStr newString:(NSString *)newStr{ //1.浅遍历 directory :/Users/qianfeng/Desktop/OC培训文件/朱老师/日期和文件/李权的文本替换专家/李权的文本替换专原创 2016-02-20 17:31:53 · 466 阅读 · 0 评论 -
OC修改单个文件的函数
+(BOOL)replaceTextInFile:(NSString *)fileName oldString:(NSString *)oldStr newString:(NSString *)newStr{ //1.打开文件 NSFileHandle * handle = [NSFileHandlefileHandleForUpdatingAtPath:fi原创 2016-02-20 17:30:56 · 273 阅读 · 0 评论 -
OC文件管理器
#import int main(int argc,const char * argv[]) { @autoreleasepool { //获取文件管理器,单例 NSFileManager *fm = [NSFileManagerdefaultManager]; NSFileManager原创 2016-02-20 15:23:56 · 298 阅读 · 0 评论 -
不可变字符串的扩展
#import int main(int argc,const char * argv[]) { @autoreleasepool { //1.替换 NSString *str = @"他大舅他二舅"; NSString *str1 = [strstringByReplacingOccur原创 2016-02-20 11:53:09 · 210 阅读 · 0 评论 -
NSFileHandle
#import int main(int argc,const char * argv[]) { @autoreleasepool { //1.创建手柄 handle NSString *path =@"/Users/qianfeng/Desktop/OC培训文件/朱老师/日期和文件/日期和文件/NSFileHa原创 2016-02-20 11:20:51 · 182 阅读 · 0 评论 -
NSData
#import //NSData :二进制数据int main(int argc,const char * argv[]) { @autoreleasepool { //NSString 和NSData的相互转化 NSString *str = @"猴赛雷"; NSData *data = [原创 2016-02-20 11:19:38 · 311 阅读 · 0 评论 -
NSDateFormatter
#import //NSDateFormatter :将日期和字符串相互转化int main(int argc,const char * argv[]) { @autoreleasepool { NSDateFormatter *dateformater = [[NSDateFormatteralloc]ini原创 2016-02-20 11:18:14 · 214 阅读 · 0 评论 -
Date的用法
#import int main(int argc,const char * argv[]) { @autoreleasepool { //1.构造时间 NSDate *date1 = [NSDatedate];//或取当前时间 NSLog(@"%@",date1);//显示格林尼治GTM时原创 2016-02-20 11:17:13 · 237 阅读 · 0 评论 -
Extention匿名类
当不想对外公开一些类的方法时,我们可以使用匿名类别前置声明私有化的成员方法(私有化的成员方法可以不前置声明)声明私有化的属性,声明私有化的成员变量(也可以声明在实现部分) 1.匿名类别的基本语法 在.m文件中 @interfacePerson()//没有名字 -(void)song; @end @impl原创 2016-02-19 10:21:08 · 208 阅读 · 0 评论 -
OC中分类
分类:又称为类别 作用:扩充类的功能 @interface类名(分类名) 方法的声明 @end @implementation类名(分类名) 方法的实现 @end 注意:1.分类中不能生成属性(成员变量) 只能生成方法【包括类方法和对象方法】 2.格式是类名后面加(),()中是分类名原创 2016-02-19 10:20:12 · 431 阅读 · 0 评论 -
OC中文比较大小
在oc之中的字符串为汉字的时候,我们常常要进行字符串比较,但是汉字不能比较,所以就要将汉字转化成为拼音,具体过程如下://可变字符串必须是可变字符串. NSMutableString *mutableString = [NSMutableStringstringWithString:@"小明"]; //转成带声调的拼音 CFStringTransfor原创 2016-02-19 10:14:16 · 554 阅读 · 0 评论 -
可变字符串
#import int main(int argc,const char * argv[]) { @autoreleasepool { // insert code here... //NSLog(@"Hello, World!"); //可变字符串的使用原创 2016-01-29 14:58:17 · 491 阅读 · 0 评论 -
字符串
#import int main(int argc,const char * argv[]) { @autoreleasepool { // insert code here... //NSLog(@"Hello, World!"); //OC自己封装了很多类原创 2016-01-29 14:55:37 · 237 阅读 · 0 评论 -
id类型和NSObject的区别
1.id类型没有定义任何方法,NSObject定义了很多方法2.id类型的变量可以直接调用子类型的方法,不需要类型强转,而NSObject需要类型强转!原创 2016-01-28 15:04:42 · 565 阅读 · 0 评论 -
oc的私有方法
在@interface中没有声明的方法叫做私有方法任何类型都可以写私有方法@protected:默认的权限(可以在当前子类里面使用)@public :可以在任何地方使用@package:在同一编译环境下可以访问(gcc)@private :只能在当前类中使用//实现description方法//打印Girl类型的对象是默认调用这个方法原创 2016-01-28 11:52:38 · 391 阅读 · 0 评论 -
@property 的作用
可以生成getter和setter方法的声明,方法的实现默认生成个体私有的成员变量,子类不能继承这个成员变量@property +(readonly,nonatomic,assign) +类型 +变量名1.readonly:只读,表示外面只能调用getter方法,不能调用setter方法 readwrite:读写(默认值),表示外面可以调用getter/sette原创 2016-01-28 09:29:13 · 1756 阅读 · 0 评论 -
iOS-应用双层代码签名
什么是数字签名数字签名介绍通信双方A,B,A拥有RSA(非对称加密)的私钥,B拥有RSA的公钥,现在A要发送一个文件给B,但是这个文件又比较大,RSA一般适用于小文件的加密,所以直接采用RSA不太合适,所以A通过Hash函数,生成文件的摘要(digest)(进行签名),然后使用私钥对这个文件摘要加密,然后将这个加密后的摘要文件和要发送的文件一起发送给B,B接受到文件后,通过公钥对摘要文件进行解密,然后B对发送来的文件通过Hash 函数,生成摘要,用这个摘要和解密好的摘要文件内容进行对比,如果相同,就说明原创 2020-11-03 12:03:20 · 311 阅读 · 0 评论 -
iOS Objective-C 深拷贝和浅拷贝的详解
什么是深拷贝和浅拷贝深复制:直接拷贝生成一个新对象,改变原对象的属性不会影响新的对象,在内存中出现了两个独立的对象本身。浅拷贝:并不拷贝对象本身,只是对指向对象的指针进行拷贝,改变原对象的属性会影响新的对象,内存中本质上还是一个对象。非容器类的深拷贝和浅拷贝不可变对象的拷贝 //[str1 mutableCopy];生成的是一个可变对象 //因为都是不可变字符串,创建方式并不影响拷贝方式。 NSString *str1 = @"这是string"; N原创 2020-10-22 13:30:48 · 166 阅读 · 0 评论 -
在ARC中为啥要用weak修饰弱引用
weak和assign的区别weak只能用来修饰对象,使用weak修饰的对象的默认值是nil,不能用来修饰基本数据类型,否则会发生编译错误(Property with ‘weak’ attribute must be of object type)。使用weak修饰对象时,对象的引用计数不会增加,当引用计数为0,对象释放之后,指针变量同时置为nil,在OC中向nil发送消息是安全的。assign通常用来修饰基本数据类型,如int、float、BOOL,如果用assign修饰的对象,对象的引用计数原创 2020-10-22 10:11:18 · 138 阅读 · 0 评论 -
GCD学习《一》
Grand Central Dispatch(GCD)是Apple开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。他是在线程池模式的基础上执行的并发任务。在Mac OS X 10.6 中首次推出,也可以在iOS 4以及以上版本使用。GCD的优点可以用于多核的并行运算会自动利用更多的CPU内核会自动管理线程的生命周期GCD的队列(串行队列,并发队列)串行队列(Serial Dispatch Queue):每次只有一个任务被执行,让任务一.原创 2020-10-21 16:12:52 · 141 阅读 · 0 评论 -
iOS 生成二维码(Swift)
public enum CodeDescriptor: String { case qrCpde = "CIQRCodeGenerator" //只能识别 ascii characters case code128Barcod = "CICode128BarcodeGenerator" //显示中文会乱码 case pdf417 = "CIPDF417BarcodeGenerator" //显示中文会乱码 case aztec = "CIAztecCo原创 2020-05-12 14:33:15 · 1135 阅读 · 0 评论 -
iOS 获得当期显示的VC,View所在的VC
//1.获得当前正在显示的ViewController -(UIViewController *)getVisibleViewController:(UIViewController *)rootViewController{ if ([rootViewController isKindOfClass:[UINavigationController class]]) { return [self getVisibleViewController:[(UINavigationCont原创 2020-05-12 13:56:27 · 1822 阅读 · 0 评论 -
iOS AVCaptureDevice介绍
简介AVCaptureDevice 一种为捕获会话提供输入(例如音频或视频)并提供针对特定于硬件的捕获功能的控件的设备。是关于硬件的接口,用于配置底层硬件的属性(如对焦,闪光灯,曝光等)。这些底层硬件包括前置摄像头、后置摄像头、麦克风、闪光灯等。使用AVCaptureDevice向AVCaptureSession对象提供输入数据(如音频或视频)。1. 权限申请iOS 权限申请字段首先应该在Info.plist中添加相应的权限字段 如:申请相机权限<key>NSCameraUsageDe原创 2020-05-12 13:48:53 · 4808 阅读 · 0 评论 -
iOS info.plist 字段介绍
iOS info.plist 常用字段字段介绍Info.plist 官方文档字段作用Property List KeyLocalization native development region与本地化设置有关,为默认的开发语言CFBundleDevelopmentRegionExecutable file程序安装包的名称CFBundleExecutableInfoDictionary version版本信息CFBundleInfoDictionaryVer原创 2020-05-11 15:27:58 · 415 阅读 · 0 评论 -
常用二维码简介
code128码(条形码)CODE128码是广泛应用在企业内部管理、生产流程、物流控制系统方面的条码码制,由于其优良的特性在管理信息系统的设计中被广泛使用,CODE128码是应用最广泛的条码码制之一。CODE128码是1981年引入的一种高密度条码,CODE128 码可表示从 ASCII 0 到ASCII 127 共128个字符,故称128码。其中包含了数字、字母和符号字符。特点可表...原创 2020-05-07 11:23:50 · 3260 阅读 · 0 评论 -
iOS 录音功能实现
音频基本知识采样率(sampleRate)所谓采样就是在时间轴上对信号进行数字化。根据奈奎斯特定理(也称为采样定理),按比声音最高频率高2倍以上的频率对声音进行采样(也称为AD转换),对于高质量的音频信号,其频率范围(人耳能够听到的频率范围)是20Hz~20kHz,所以采样频率一般为44.1kHz,这样就可以保证采样声音达到20kHz也能被数字化,从而使得经过数字化处理之后,人耳听到的声音...原创 2020-05-06 10:11:39 · 2692 阅读 · 0 评论 -
iOS 相册的使用
常用类介绍PHPhotoLibrary:该类用于表示设备和iCloud上所有的收藏和资源。可以使用一个共享实例以一种线程安全的方法对照片库的变化进行管理,比如添加新的资源和相簿,或者编辑和删除已有的资源或相簿,此外,共享实例还可以注册一个关于照片库发生变化的监听对象,以实现用户界面的同步。PHAssetCollection:该类一般用于表示一组照片或者视频》可以在设备上本地创建,可以从...原创 2020-04-02 18:01:34 · 1018 阅读 · 0 评论 -
Swift 之 SQLite.swift的使用
GitHub地址 SQLite.swiftSQLite.swift使用Swift 编写的一款SQLite工具,封装了各种sql操作,避免了纯sql语句的开发安装Carthagegithub "stephencelis/SQLite.swift" ~> 0.12.0CocoaPods安装pod 'SQLite.swift', '~> 0.12.0'Swif...原创 2020-04-02 16:56:49 · 3255 阅读 · 0 评论 -
优化UITableViewCell高度计算的那些事
转载 :http://blog.sunnyxx.com/2015/05/17/cell-height-calculation/这篇文章是我和我们团队最近对 UITableViewCell 利用 AutoLayout 自动高度计算和 UITableView 滑动优化的一个总结。我们也在维护一个开源的扩展,UITableView+FDTemplateLayoutCell,让转载 2017-02-28 11:30:17 · 199 阅读 · 0 评论 -
iOS:学习runtime的理解和心得
Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西。最近在学习Runtime,有自己的一些心得,整理如下,一为 查阅方便二为 或许能给他人一些启发,三为 希望得到大家对这篇整理不足之处的一些指点。什么是Runtime我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomethi转载 2017-02-28 10:09:55 · 183 阅读 · 0 评论 -
总结整理下一个快速开发MVVM框架
转载地址:http://www.cocoachina.com/ios/20160301/15425.html概述引用自iOS应用架构谈MVVM的出现主要是为了解决在开发过程中Controller越来越庞大的问题,变得难以维护,所以MVVM把数据加工的任务从Controller中解放了出来,使得Controller只需要专注于数据调配的工作,ViewModel则去转载 2017-07-11 09:43:19 · 547 阅读 · 0 评论 -
最快让你上手ReactiveCocoa之进阶篇
转载地址:http://www.jianshu.com/p/e10e5ca413b7前言由于时间的问题,暂且只更新这么多了,后续还会持续更新本文《最快让你上手ReactiveCocoa之进阶篇》,目前只是简短的介绍了些RAC核心的一些方法,后续还需要加上MVVM+ReactiveCocoa实战开发。如果喜欢我的文章,可以关注我,微博:[袁峥Seemygo](http转载 2017-07-11 09:41:03 · 305 阅读 · 0 评论 -
最快让你上手ReactiveCocoa之基础篇
转载地址:http://www.jianshu.com/p/87ef6720a096前言很多blog都说ReactiveCocoa好用,然后各种秀自己如何灵活运用ReactiveCocoa,但是感觉真正缺少的是一篇如何学习ReactiveCocoa的文章,小编看了很多篇都没看出怎么使用ReactiveCocoa,于是决定自己写一遍关于学习ReactiveCo转载 2017-07-11 09:39:04 · 346 阅读 · 0 评论