自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 iOS 13 dark mode适配 navigationBar没有随着模式切换变色

原因:self.navigationBar.barStyle = UIBaselineAdjustmentNone;这行代码本来是为了隐藏navigationBar的下划线,结果在iOS13中与dark mode配置冲突.解决办法:self.navigationBar.barStyle = UIBarStyleDefault;将barStyle配置改成default.除...

2019-10-09 17:06:13 1188 1

原创 隐私政策

本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确,更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉,审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权...

2019-06-21 16:49:39 209

原创 技术支持网址

iOS 技术支持网址:如有疑问,敬请咨询邮箱地址: 2553400893@qq.com联系电话:+8613799279833

2019-06-21 16:46:05 346

原创 iOS逆向笔记:分析静态库

1.查看架构lipo -info Crashlytics2.选择一种架构分析lipo Crashlytics -thin arm64 -output Crashlytics_arm643.解压静态库文件mkdir Objectscd Objectsar -x ../Crashlytics_arm643.1 搜索动态库一般从初始化函数开始,搜索动态库包含内容,例如包含...

2018-11-17 01:29:59 1726

原创 iOS逆向笔记: gdb指令

添加断点b *地址或b *(偏移+基础地址)b 方法名 查看断点信息info b 禁用断点disable breakpointNumber禁用全部disable启用enable breakpointNumber启用全部enable 删除断点delete或者d breakpointNumber 继续运行continue或...

2018-11-17 01:26:47 184

原创 iOS逆向笔记:底层知识回顾

OC底层,iOS相关知识回顾 触发事件响应时用[address nextResponder]获取下一个响应者,一般顺序view > viewController > window > UIApplication > UIAppDelegate > nil如果button设置target为nil,则会一层层向下寻找responder 寻找...

2018-11-11 23:53:25 188

原创 iOS报错: this class is not key value coding-compliant for the key

1.检查对应的xib是否有连线失效2.如果是collectionView,检查对应的xib文件,module是否选择正确 

2018-11-09 17:14:11 2189 1

原创 PS cs6 for MAC 安装失败,提示 “获取 Adobe Support Advisor”解决办法

1.打开安装文件2.选择安装程序,显示包内容3.进入contents/MacOS文件夹,执行install

2017-02-23 16:02:39 13049

原创 OC阅读笔记十九:禁用retainCount

在ARC中,使用retainCount会报错,此方法已经被正式废弃.即使在MRC中,也不要使用retainCount.    retain只能返回某个时间点上的引用计数,但是我们并不知道该对象是否已经添加到自动释放池中,使用retaincount 反而会误导开发者错误判断对象的引用计数值.    系统会尽可能的将NSString实现成单例对象,如果字符串是个编译期常量,那么编译器会将NSS

2016-04-12 22:27:27 420

原创 OC阅读笔记十八:僵尸对象(Zombie Object)

在捕捉向已回收对象发送消息的异常时,可使用僵尸对象.若要使用僵尸对象,则要在Scheme->run中勾选"Enable Zombie Objects".    若开启僵尸对象,在回收对象时,会将该对象转化为僵尸对象.即将回收对象的isa指针指向特殊的僵尸对象,该僵尸对象是_NSZombie_的拷贝.    僵尸类能响应所有的选择子.    在消息转发机制的___forwarding__

2016-04-11 23:30:11 1084

原创 OC阅读笔记十七: "autorelease pool"降低内存峰值

在可能进行多次循环的情况下,或者循环中使用了开销大的对象时,等待循环结束再去释放循环中临时创建的对象,会导致内存峰值过高.    并非每个循环都要使用autoreleasepool来优化,在确认其内存用量前,不要建立多余的自动释放池,尽管自动释放池的开销并不大,但还是有的.    自动释放池排布在栈中,收到autorelease消息后,会将对象放入栈顶的池里    @autorelea

2016-04-10 22:31:24 394

原创 OC阅读笔记十六:保留环

几个对象互相引用形成环,当无其他对象引用环中的对象时,就会造成内存泄露.保留环可以通过弱引用声明”非拥有关系"来避免.    unsafe_unretained修饰的对象,在调用方法时,若是对象被回收,可能会使应用崩溃.    weak修饰的对象,在对象被回收后,就会自动将属性值设为nil.这么做导致数据错误比起对象被回收应用崩溃体验上要来得好

2016-04-10 22:26:12 264

原创 OC阅读笔记十五:"异常安全代码"的内存管理

在使用Objective-C++编码时,或者使用第三方库时抛出不受控制的异常的情况下,需要捕获和处理异常.    在MRC下,捕获异常后可以在@finally里释放try块里创建的对象.    在ARC下,由于生成安全处理异常的附加代码会导致应用程序变大,降低运行效率等问题,需要时必须手动开启-fobjc-arc-exceptions标志来使用该附加代码.并且当OC里抛出异常时应用已经终止

2016-04-10 22:23:30 308

转载 更新证书错误:No matching provisioning profiles found

在Xcode中当你在更新了你得证书而再重新编译你的程序,真机调试会出现“Your build settings specify a provisioning profile with the UUID‘XXX’, however, no such provisioning profile was found.  Xcode can resolve this issue by downloading

2016-04-07 17:54:38 494

原创 真机调试报错:Please verify that your device’s clock is properly set

真机调试报错:Please verify that your device’s clock is properly set, and that your signing certificate is not expired. (0xE8008018).

2016-04-07 17:52:28 801

原创 OC阅读笔记十四:dealloc

在dealloc方法里只应该释放所有对象并解除订阅的KVO和通知,不要有多余的操作.    如果对象拥有一些开销大或者系统内稀缺的资源,那么等到dealloc方法再释放是不适合的.通常是实现另一个清理对象的方法,在使用完这些资源后就调用该方法清理资源.    如果在dealloc里调用其他方法容易导致各种应用崩溃的问题,比如异步方法执行后,要回调对象时,对象已经被摧毁了,那么回调操作就好出

2016-04-07 00:42:16 362

原创 OC阅读笔记十三:ARC(下)

在方法中返回自动释放对象的时候,会调用objc_autoreleaseReturnValue函数检测返回的对象是否执行retain操作,如果执行就设置全局数据结构的一个标志位.而不执行autorelease操作.    与之相似,如果调用方法的代码要保留此对象,则调用objc_retainAutoreleasedReturnValue函数,检测刚刚的标志位,若已经置位,则不执行retain操作

2016-04-06 00:34:57 323

原创 OC阅读笔记十二:ARC(上)

ARC的功能都是基于核心的内存管理语义构建的.    在ARC中调用 retain,release,autorelease,dealloc方法都会报错,因为这会干扰ARC自动管理工作的进行.    并且在ARC调用这些方法时,并不是通过object-C的消息派发机制.而是通过直接调用其底层的C语言版本.比如retain方法的等价底层函数 objc_retain.这么做对于频繁执行的保留释放

2016-04-05 00:26:48 307

原创 OC阅读笔记十一:引用计数

对象如果存活,就说明正被其他对象拥有.从引用关系不断向下挖掘,会发现一个"根对象".    每个应用都有根对象(root object),在Mac OS X 应用中是NSApplication对象,iOS 应用中是UIApplication对象,两者都是应用程序启动时创建的单例.    当对象引用计数归零被回收时,系统会将内存标记可重用"reuse"放入可用内存池,但并不意味着对象不可用.

2016-04-04 01:54:56 307

原创 OC阅读笔记十:匿名对象

协议可以在某种程度上提供匿名类型,当接口背后有多个不同的实现类,又不想声明指定哪个类时,可以使用这种方法.因为有时候这些类会变,有时候又无法容纳于标准的类继承体系中,不能以某个公共基类来统一标示.    在一些情况下,对象的类型并不重要,重要的是对象有没有实现某些方法,可以用"匿名类型"来表达该概念.    在开发后续版本时,如果之前使用了"匿名对象"概念,则无需改变公有API,即可切换实

2016-04-02 23:03:57 294

原创 OC阅读笔记九:分类(下)

除了"class-continuation"之外的分类定义属性都无法向类中新增实例变量.    如果必要,可以用@dynamic声明,然后使用消息转发机制在运行期拦截方法调用,提供实现方法.    关联对象能解决分类不能合成实例变量的问题,但容易在内存管理问题上出错.    一般最好的作法是将所有属性都定义在主接口.    在"class-continuation"分类里可以隐藏实

2016-04-02 00:31:44 219

原创 OC阅读笔记八:分类(上)

将类里的方法根据功能分类,便于管理和调试.    例如某些私有方法,可以放在名为private的分类中,这样即使是其他使用者看到回溯信息时,也能理解方法的用途.这算是一种编写"自我描述式代码(self-documenting code)"的办法.    定义分类和方法时,应该加上程序或者库一致使用的前缀,这样能有效避免与其他分类重名.    分类重名并不会造成错误,但是后加载的分类会覆

2016-03-31 23:19:00 221

原创 OC阅读笔记七:委托数据源与协议

存放委托对象的属性(delegate)要用weak定义,因为可能委托的对象也持有本对象.二者之间必须为"非拥有关系".避免保留环造成内存泄露.    根据需求可以选择用weak或unsafe_unretained来定义delegate.    委托方法即可以传递参数给委托对象,也能获取委托对象的返回值.    委托协议一般用可选的(optional)标注,在调用委托方法前,必须先确定委

2016-03-30 22:45:05 352

原创 OC阅读笔记六:NSCopying协议

若想让自己的类支持拷贝,则必须实现NSCopying协议.该协议只有一个方法:-(id)copyWithZone:(NSZone*)zone    如果自定义的对象分可变与不可变版本,需同时实现NSCopying和NSMutableCopying协议    拷贝可变的属性时,应该拷贝它的实例变量,    无论当前拷贝的对象是否可变,copy取得的都是不可变版本,而mutableCopy

2016-03-29 23:03:47 332

原创 OC阅读笔记五:异常机制

在ARC环境下发生异常,可能导致作用域末尾释放的对象得不到自动释放.如果想要"异常安全",则需要设置"-fobjc-arc-exceptions"编译器标志.    Objective-C当前只有在极为严重的情况下抛出异常,并且退出应用,不考虑恢复问题.    一般非致命错误时,通常是返回nil/0,或者使用NSError.    NSError对象内封装了三条信息,domain(错误

2016-03-28 22:10:07 264

原创 OC阅读笔记四:消息转发

在消息转发的过程中,可以告诉对象如何处理无法解读的未知消息.    消息转发分两大阶段,第一阶段为"动态方法解析",就是判断接收者所属的类能否动态添加方法处理未知消息.若使用该方法,需实现相关的代码.通常用来实现@dynamic属性.    第二阶段第一步,如果第一阶段返回NO,则会查看接收者内部其他对象是否能够处理未知的选择子,如果可以便返回该对象,否则进入下一步.    第二阶段第

2016-03-27 23:26:40 249

原创 OC阅读笔记三:动态绑定

Objective-C通过向对象发送消息来调用方法,其核心函数为objc_msgSend.    objc_msgSend的参数分三部分:对象为接收者,方法名为选择器,以及消息中的参数.    每个类中都有个方法列表,由选择器作为key,方法实现作为值.objc_msgSend通过查询方法列表来获取具体的实现代码.    方法列表里的选择器与其对应的方法可以在运行时修改.    每

2016-03-27 00:01:32 293

原创 OC阅读笔记二:命名规范,避免冲突

由于Apple保留两字母前缀,当选择前缀时最好从三字母开始.    不仅仅是类名,应用程序中的所有名称都应该加前缀,包括分类和分类的方法.    前缀不仅能避免冲突,在栈回溯信息中,也能起到定位的作用.    如果要发布供其他人使用的代码,并在其中引入了第三方库AAA,需要给AAA加上前缀.避免使用者导入的其它第三方库里包含了相同的内容冲突,否则程序会造成重复符号错误.    当使

2016-03-25 23:16:44 400

原创 OC阅读笔记一:尽量使用不可变对象

当将可变对象放入collection又修改值时,容易破坏set的内部数据结构,令其失去固有的语义;    将属性声明为readonly后,当试图改变属性值时编译器就会报错.保证开发时对象的底层数据不会改变,对象本身的数据结构也就不可能出现不一致的现象.    在对象内部"class-continuation分类"可以将属性重新声明为readwrite.    如要修改属性值,应该通过该

2016-03-24 22:24:14 331

原创 iOS真机调试报错 A valid provisioning profile for this executable was not found.

真机调试时发现两台测试机一台可以调试,一台报错.经过排查发现了原因:解决方法如下:1.打开Xcode-> Window-> devices 选择报错的测试机2.选择show provisioning  profiles3.将mobileprovision证书加入

2015-12-16 17:35:03 1307

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除