iOS的知识点
Victor_Barnett
这个作者很懒,什么都没留下…
展开
-
Swift中throws处理方式
第一种方法:try 程序员手动捕捉异常 do { let array = try PropertyListSerialization.propertyList(from: plistData!, options: PropertyListSerialization.ReadOptions.mutableContainersAndLeaves, format: nil) } catch { print(error)原创 2021-03-31 16:40:40 · 601 阅读 · 0 评论 -
Swift - extension
概述 - extension在swift中,swift可以为特定的class, strut, enum或者protocol添加新的特性。当你没有权限对源代码进行改造的时候,此时可以通过extension来对类型进行扩展。extension有点类似于OC的类别 – category,但稍微不同的是category有名字,而extension没有名字。swift的extension可以做如下几件事,添加计算属性 - computed properties添加方法 - methods添加初始化方法 -原创 2021-03-10 17:11:51 · 744 阅读 · 0 评论 -
JXCategoryKit 系统基础类扩展
JXCategoryKit 系统基础类扩展包含 Foundation.framework 内的NSDate,NSTimer,NSObject,NSNull,NSFileManager,NSString,NSDictionary,NSError,NSBundle,NSArray 类扩展包含 UIKit.framework内的UIWindow,UIViewController,UIView,U...原创 2020-03-28 15:45:30 · 372 阅读 · 0 评论 -
自旋锁与互斥锁
互斥锁如果发现其它线程正在执行锁定代码,线程会进入休眠(阻塞状态),等其它线程时间片到了打开锁后,线程就会被唤醒(执行)。自旋锁如果发现有其它线程正在执行锁定代码,线程会以死循环的方式,一直等待锁定的代码执行完成。原创 2016-02-26 16:52:01 · 215 阅读 · 0 评论 -
Unknown class ViewController in Interface Builder file问题解决
在最新的Xcode7.2中,如果你删除了ViewController文件,但是你没有删除Main.storyboard就会出现这个问题,但是当你删除了Main.storyboard时,运行程序会直接crash,原因就在这里删除掉里面这段后,运行就没错了原创 2016-03-16 11:01:21 · 1467 阅读 · 0 评论 -
OC实现多继承
OC只能支持单继承,并不能像C++那样支持多继承,但在使用过程中有时会需要多继承,这个时候我们可以使用delegate来实现多继承,但是这个方法存在弊端,不能继承属性,只能继承方法,下面我简单地说一下首先我们有三个类ClassA,ClassB和ClassC.ClassC继承于A和B首先定义A和B然后定义C最后实现一下原创 2016-02-26 16:13:44 · 429 阅读 · 0 评论 -
iOS 5.0 后UIViewController新增:willMoveToParentViewController和didMoveToParentViewController
在iOS 5.0以前,我们在一个UIViewController中这样组织相关的UIView在以前,一个UIViewController的View可能有很多小的子view。这些子view很多时候被盖在最后,我们在最外层ViewController的viewDidLoad方法中,用addSubview增加了大量的子view。这些子view大多数不会一直处于界面上,只是在某些情转载 2016-02-23 14:28:06 · 251 阅读 · 0 评论 -
取消注册通知监听器的原因
通知中心不会保留(retain)监听器对象, 在通知中心注册过的对象 ,必须在该对象释放前取消注册. 否则, 当相应的通知再次出现时, 通知中心仍然会向该监听器发送消息. 因为, 相应的监听器对象已经被释放了, 所以可能会导致应用崩溃 . 通知中心提供了相应的方法来取消注册监听器- (void)removeObserver:(id)observer; - (vo原创 2016-02-23 13:09:54 · 883 阅读 · 0 评论 -
iOS中copy和mutableCopy
如果对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝)。如果是对可变对象复制,都是深拷贝,但是copy返回的对象是不可变的原创 2016-03-07 18:09:25 · 227 阅读 · 0 评论 -
Xcode环境配置文件在Mac下的路径
查找文件绝对路径 ~/Library/MobileDevice/Provisioning Profiles原创 2016-05-25 17:50:08 · 886 阅读 · 0 评论 -
.framework设置函数的可见性(__attribute__((visibility ("XXX"))))
.framework设置函数的可见性visibility用于设置动态链接库中函数的可见性,将变量或函数设置为hidden,则该符号仅在本so中可见,在其他库中则不可见。g++在编译时,可用参数-fvisibility指定所有符号的可见性(不加此参数时默认外部可见,参考man g++中-fvisibility部分);若需要对特定函数的可见性进行设置,需在代码中使用__attribute__设...原创 2018-05-14 22:12:36 · 1709 阅读 · 0 评论 -
iOS 的ARM和X86
介绍armv7|armv7s|arm64都是ARM处理器的指令集i386|x86_64 是Mac处理器的指令集arm64:iPhoneX | iPhone8 | iPhone7 | iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad Pro | iPad Air2 | iPad Air|iPad mini4...原创 2018-03-06 10:49:50 · 1075 阅读 · 0 评论 -
iOS开发-静态库和动态库
1、什么是库?库是共享程序代码的方式,一般分为静态库和动态库。2、静态库与动态库的区别?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。3、iOS里静态库形式?.a和.framework4、iOS里动态库形式?.tbd(Xcode...原创 2018-02-28 11:00:31 · 214 阅读 · 0 评论 -
NSDocumentDirectory NSDocumentationDirectory 的区别
NSDocumentDirectory 是指程序中对应的Documents路径,拥有读写的权限。NSDocumentionDirectory对应于程序中的Library/Documentation路径,这个路径是没有读写权限的原创 2017-04-12 11:34:38 · 1514 阅读 · 0 评论 -
iOS10.0上线APP关于隐私的访问
今天上线新项目,被拒回来了两次,第一次发现是访问苹果的隐私时没有在info.plist文件里面加权限,添加之后再次上传,结果又被拒回来了,发现问题所在,在访问苹果的隐私数据时后面的string值不能为空,绝对不能置空,不然还是会被苹果拒回来的.原创 2016-10-27 20:12:07 · 314 阅读 · 0 评论 -
NSAssert和NSParameterAssert
哎,前段时间项目太忙,一直没时间更新博客,现在终于可以重新提笔继续写一下博客了,顺便整理一下最进使用的技术. NSAssert是一个宏,整个内容是NSAssert(condition, desc, ...),condition是对一个表达式判断真假,如果这个表达式为真,程序继续运行,如果表达式为假,则抛出异常,后面的desc是自定义的异常描述.NSAssert()可以出现原创 2016-10-25 14:27:37 · 385 阅读 · 0 评论 -
iOS程序员必备常用工具
常用工具Alfred —- 效率神器(类似Spotlight,但是功能强大,可以自定义工作流,没他我不行)Xcode —- 开发工具,谁都知道SourceTree -— git管理工具,可直观看到各版本,方便对比历史版本. 经常下载不到,可以复制下载链接用迅雷等工具下载。Syncro SVN Client — svn管理工具XtraFinder — Finder扩展,强大的窗口扩展Moom转载 2016-03-08 09:01:43 · 648 阅读 · 0 评论 -
iOS的NSString和NSDate之间的转换
日期之间比较可用以下方法 - (BOOL)isEqualToDate:(NSDate *)otherDate; 与otherDate比较,相同返回YES - (NSDate *)earlierDate:(NSDate *)anotherDate; 与anotherDate比较,返回较早的那个日期 - (NSD原创 2016-03-13 17:48:54 · 282 阅读 · 0 评论 -
移动端APP第一次登录和自动登录流程
App登陆保存数据流程App因为要实现自动登陆功能,所以必然要保存一些凭据,所以比较复杂。 App登陆要实现的功能: 密码不会明文存储,并且不能反编绎解密; 在服务器端可以控制App端的登陆有效性,防止攻击者拿到数据之后,可以长久地登陆; 用户如果密码没有泄露,不用修改密码就可以保证安全性; 可以区分不同类型的客户端安全性;比如Android用户受到攻击,只会让Andr原创 2016-03-14 11:11:31 · 19545 阅读 · 1 评论 -
iOS下KVO使用过程中的陷阱
KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应。网上广为流传普及的一个例子是利用KVO检测股票价格的变动,例如这里。这个例子作为扫盲入门还是可以的,但是当应用场景比较复杂时,里面的一些细节还是需要改进的,里面有多个地方存在crash的危险。本文旨在逐步递进深入地探讨出一种目前比较健壮稳定的KVO实现方案,弥补网上大部分转载 2016-03-15 17:43:05 · 279 阅读 · 0 评论 -
iOS中的#ifdef,#define,#endif
一些接外包的公司里面,在应用程序开发过程中可能会经历TEST,UAT,PRODUCT三个阶段,那么在这个三个阶段可能每次调用的接口都不一样,这时就需要我们在PCH文件里面用宏定义不同时期需要的接口,那么#ifdef这个时候就有用处了。记住有多少个#ifdef就要有多少个#endif,每次切换接口的时候将不用的接口注释掉就可以了。#define HostEnvironment_PRODUCT原创 2016-04-18 11:28:57 · 1465 阅读 · 0 评论 -
IOS中对Url进行编码和解码
// 编码+ (NSString *)URLEncodedString:(NSString *)input{ NSString *outputStr =(NSString *) CFBridgingRelease( CFURLCreateStringByAddingPercentEscapes原创 2016-03-07 14:24:14 · 402 阅读 · 0 评论 -
设置iOS的Code Snippet 快捷代码块
首先选中你要添加的代码块,按住alt键拖进如下图所示区域code snippet滚动code snippet到最后一行即可看到自己添加的代码块,点击自己添加的代码块,选择EditTitle无关紧要,给你的代码块写个名字,completion shortcut设置你的快捷缩写,Completion Scopes 设置为All,然后你就可以在文中随心所欲的使用自己设置的code原创 2016-02-19 10:03:31 · 655 阅读 · 0 评论 -
IB_DESIGNABLE和IBInspectable
IB_DESIGNABLE的宏的功能就是让XCode动态渲染出该类图形化界面使用IB_DESIGNABLE的方式,把该宏加在自定义类的前面#import IB_DESIGNABLE // 动态刷新@interface YCCustomView : UIView// 注意: 加上IBInspectable就可以可视化显示相关的属性哦/** 可视化设置边框宽度 */@pr原创 2016-02-18 17:58:59 · 241 阅读 · 0 评论 -
更换app开发者账号
首先在iTunes Connect中找到要更换开发者账号的app,点击其中的转让app点进去之后出现了一些注意事项,大概看了一下,貌似没有什么不符合的,提示大概三个小时就可以转让成功,因为我们的app不收费,而且没有用iAd,有这种情况的大概要两个工作日没有问题的话,点击继续,需要填写一些接受者团队的Apple ID,和团队ID其中Apple ID转载 2015-12-24 09:41:42 · 1201 阅读 · 0 评论 -
iOS开发-CoreMotion框架(加速计和陀螺仪)
CoreMotion是一个专门处理Motion的框架,其中包含了两个部分加速度计和陀螺仪,在iOS4之前加速度计是由UIAccelerometer类来负责采集数据,现在一般都是用CoreMotion来处理加速度过程,不过由于UIAccelerometer比较简单,同样有人在使用。加速计由三个坐标轴决定,用户最常见的操作设备的动作移动,晃动手机(摇一摇),倾斜手机都可以被设备检测到,加速计可以检测到转载 2015-12-23 16:51:29 · 684 阅读 · 0 评论 -
NSUserDefaults单例简介
一、了解NSUserDefaults以及它可以直接存储的类型 NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前提,也是大家喜欢用它保存简单数据的一个主要原因。 使用 NSUserDefaults 存储自定义对象的最初,我们必须认识NSUserDef转载 2016-01-06 15:19:35 · 269 阅读 · 0 评论 -
enum和enum typedef 在IOS中的使用
第一、typedef的使用C语言里typedef的解释是用来声明新的类型名来代替已有的类型名,typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)如:typedef char gender;gender a;与char a;语句相同。第二转载 2016-01-07 14:07:05 · 197 阅读 · 0 评论 -
Associative机制使用场景
1. 概念objective-c有两个扩展机制:category和associative。我们可以通过category来扩展方法,但是它有个很大的局限性,不能扩展属性。于是,就有了专门用来扩展属性的机制:associative。 2. 使用方法在iOS开发过程中,category比较常见,而associative就用的比较少。associative的主要转载 2016-01-07 11:52:27 · 182 阅读 · 0 评论 -
iOS类别(Category)和扩展(Extension)
创建类别和扩展类别类别是一种为现有的类添加新方法的方式。利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类。类别使得无需创建对象类的子类就能完成同样的工作一、创建类别1、声明类别声明类别与声明类的形式很相似原创 2016-01-07 10:48:22 · 411 阅读 · 0 评论 -
iOS开发的Pch预编译文件之Xcode7
在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问。是一个预编译文件。 首先说一下pch的作用:1.存放一些全局的宏(整个项目中都用得上的宏)2.用来包含一些全部的头文件(整个项目中都用得上原创 2016-01-06 16:12:15 · 359 阅读 · 0 评论 -
iOS声明变量用大括号和@property的区别
刚开始接触OC再看别人写的代码的时候,常常困惑于人家在声明属性时的写法,总结出来有三中方式,不知道哪一种比较规范化,现在我把三种方式贴出来,然后再一一探讨每个方式声明属性的区别。 方式一:直接在@interface中的大括号中声明。 @interface MyTest : NSObject{ NSString *mystr; }方式二:在@interface中声明,然后再在@prop转载 2016-01-05 16:30:16 · 2317 阅读 · 0 评论 -
关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
刚接触iOS开发的人难免会对苹果的各种证书、配置文件等不甚了解,可能你按照网上的教程一步一步的成功申请了真机调试,但是还是对其中的缘由一知半解。这篇文章就对Certificate、Provisioning Profile等做个总结。 1.概念介绍如果你拥有一个开发者账户的话,在iOS Dev Center打开Certificates, Indentifiers & Profiles转载 2015-12-18 16:14:35 · 365 阅读 · 0 评论 -
iOS数组和字符间的转换
将string字符串转换为array数组 NSArray *array = [Str componentsSeparatedByString:@","];将array数组转换为string字符串 NSString *tempString = [mutableArray componentsJoinedByString:@","];@"原创 2016-01-18 10:34:46 · 192 阅读 · 0 评论 -
ivar,class,protocal等几个类型
Objective-C定义的几种类型含义:Class:定义Objective-C类Ivar:定义对象的实例变量,包括类型和名字Protocol:定义正式协议Objc_property_t:定义属性。叫这个名字可能是为了防止和Objective-C 1.0中的用户类型冲突,那时候还没有属性Method:定义对象方法或类方法。这个类型提供了方法的名字(就是**选择器**)、参数数量和类型,原创 2015-12-14 11:39:30 · 360 阅读 · 0 评论 -
iOS的地图和定位
概览现在很多社交、电商、团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的。的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式。例如你到了一个陌生的地方想要查找附近的酒店、超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品。总之,目前地图和定位功能已经大量引入到应用开发中。今天就和大家一起看转载 2015-12-11 13:59:48 · 487 阅读 · 0 评论 -
init 和 initWithCapacity
使用init创建对象时,是告诉程序我不知道创建多少个,暂且帮我初始化一下。 使用initWithCapacity创建对象时,是当你知道需要创建大概创建多少个时使用,这会提高内存的运用效率,避免内存碎片化,但是也并不代表你创建了10个就不能大于10个。原创 2015-12-10 10:19:45 · 548 阅读 · 0 评论 -
三种开发者账号区别
三种账号的区别(Individual,Company,EnterPrise) 1、个人开发者账号(苹果公司会收取年费) 优点:申请速度快(最快1天申请完成,最慢2-3个工作日),可以上架至AppStore供全世界的人下载.可以申请100台iOS设备(iphone/ipad/ipod)。 缺点:上架至AppStore需要经过Apple审核,在iTune原创 2015-12-24 09:51:06 · 5050 阅读 · 0 评论 -
iOS沙盒机制
第一、什么是沙盒IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒第二、保存内容所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等第三、作用iOS沙盒为程序运行提供了很好的安全保障第四、目录1、Documents目录:这个目录用于存储用户数据或其它应该定期备份的信息,苹果原创 2015-12-25 11:05:45 · 345 阅读 · 0 评论 -
iOS 扩展机制category与associative
在写新浪微博的时候,要处理点击微博图片放大的问题,这里我采用的处理是使用category和associative扩展机制为UIImageview扩展添加一个方法和一个属性,这个方法是处理点击图片放大,而这个属性就是这个图片的下载链接地址URL。下面稍微解说一下这两个扩展机制:category和associative作为objective-c 扩展机制的两个特性,cate转载 2016-01-07 13:54:36 · 181 阅读 · 0 评论