![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OC
孤独的菜鸟----
这个作者很懒,什么都没留下…
展开
-
iOS安装包瘦身
摘自头条前言一、资源文件优化资源文件优化思路较多,风险也相对较小。由于app内有优化空间的资源主要为图片,故本文中“资源”与“图片”可认为是等价词汇。排查和清除冗余图片删除重复的资源图片压缩将图片放置到云端1.1 排查和清除冗余图片整个排查和清除冗余图片可以分为三个方向:(1)常规的冗余图片清理随着业务迭代,有不少图片成为了永远也不会使用到的僵尸图片。这些图片往往占据着较...原创 2018-12-12 11:13:52 · 284 阅读 · 0 评论 -
runtime
runtime简介RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。事实证明:在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。转载 2016-05-08 16:41:34 · 314 阅读 · 0 评论 -
IOS9新特性慢慢整理
iOS9新特性之关键字iOS9新出的关键字:用来修饰属性,或者方法的参数,方法的返回值好处:迎合swift提高我们开发人员开发规范,减少程序员之间交流注意: iOS9新出关键字nonnull,nullable,null_resettable,_Null_unspecified只能修饰对象,不能修饰基本数据类型/** 1. 首字母不带下滑线的修饰类名(eg. nullable)原创 2016-05-08 11:10:27 · 1440 阅读 · 0 评论 -
蓝牙(Bluetooth)
蓝牙GameKit简介:* 实现蓝牙设备之间的通讯* 只能使用在iOS设备之间同一个应用内连接* 从iOS7开始过期了* 但是GameKit是最基本的蓝牙通讯框架* 通过蓝牙可以实现文件的共享(仅限设备沙盒中的文件)* 此框架一般用于游戏开发(比如五子棋对战)开始案例简介:* 使用蓝牙将两个iOS设备连接起来* 搜索对方的设备* 实现将手机中的图片发送给对方蓝牙互连: // 初始化链接蓝牙控制转载 2016-05-07 18:42:55 · 1425 阅读 · 0 评论 -
环信头文件整理
SDK采用模块化设计,每一模块的功能相对独立和完善,用户可以根据自己的需求选择使用下面的模块: EMClient是SDK的入口,主要完成登录,退出,连接管理等功能。也是获取其他模块的入口。 EMChatManager管理消息的收发,完成会话管理等功能。 EMContactManager负责好友的添加删除,黑名单的管理。 EMGroupManager负责群组的管理,创建,删除群组,管理群组原创 2016-04-22 22:11:20 · 2034 阅读 · 0 评论 -
react-native
1. 如何搭建开发环境(iOS)http://www.jianshu.com/p/ab07248f67412.原创 2016-05-06 11:33:12 · 215 阅读 · 0 评论 -
PNChart简单学习
PNChart是一个简单漂亮的动画图表库头文件介绍/** * 所有头文件导入 */#import "PNChart.h"/** * 定义许多自定义颜色 */#import "PNColor.h"/** * 折线图 */#import "PNLineChart.h"#import "PNLineChartData.h"#import "PNLineChartDataIt原创 2016-04-19 15:10:55 · 474 阅读 · 0 评论 -
计算文件大小
CGFloat size = 0.0; // 找到需要计算大小文件夹的全路径 NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject; NSFileManager *manager = [NSFileManager原创 2016-05-13 14:17:49 · 577 阅读 · 0 评论 -
AFNetworking慢慢整理
#import "AFURLRequestSerialization.h" #import "AFURLResponseSerialization.h" #import "AFSecurityPolicy.h" #import "AFNetworkReachabilityManager.h" #import "AFURLSessionManager.h" #imp原创 2016-04-29 14:17:28 · 269 阅读 · 0 评论 -
NSString属性什么时候用copy,什么时候用strong?
转载:http://www.cocoachina.com/ios/20150512/11805.html我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy。那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子。示例我们定义一个类,并为其声明两个字符串属性,如下所示:@interface TestSt转载 2016-05-09 13:14:28 · 205 阅读 · 0 评论 -
数据模型代码
/** * 自动生成解析数据的代码 */- (void)resolveDict:(NSDictionary *)dict{ NSMutableString *propertyString = [NSMutableString string]; [dict enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _No原创 2016-05-09 13:58:48 · 489 阅读 · 0 评论 -
const,static,extern简介
const,static,extern简介一、const与宏的区别(面试题):const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量。编译时刻:宏是预编译(编译之前处理),const是编译阶段。编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。宏的好处:宏能定义一些函数,方法。 const不能。宏的坏处:使用转载 2016-05-09 17:30:38 · 221 阅读 · 0 评论 -
CAEmitterLayer
// 创建出Layer CAEmitterLayer *emitterLayer = [CAEmitterLayer layer]; // 显示边框 emitterLayer.borderWidth = 1.f; // 给定尺寸 emitterLayer.frame = CGRectMake(100, 100, 100, 100); // 发射点 e原创 2016-12-06 15:17:46 · 332 阅读 · 0 评论 -
图片模糊
UIImage, CGImageRef, CIImage区别http://www.jianshu.com/p/aa2557d977ba1. CoreImage图片模糊 UIImage *image = [UIImage imageNamed:@"sj_choujiangBG.jpg"]; /** 模糊处理 coreImage **/ // 输入图片 CIImage *inpu原创 2016-10-26 14:57:18 · 232 阅读 · 0 评论 -
App Store审核条款更新:WWDC 2016重写版本
WWDC2016大会之后,苹果公司发布了四个全新平台:iOS,macOS,watchOS和tvOS。并且在此之后,苹果应用商店审核条款也同时进行了更新——貌似不算进行了更新,简直就是重写!上个版本的30个章节被修改成了5大章节,但原版英文版字数从5000多个英文单词增加到了6000多个英文单词。V2016.6.13 wwdc 2016 special 目录 苹果应用商店审核条款 AppStor转载 2016-08-05 16:34:17 · 725 阅读 · 0 评论 -
WKWebView
WKWebView 是IOS8新增的 Web 浏览视图,因而都是对比UIWebView !!WKWebView新特性在性能、稳定性、功能方面有很大提升(占有内存比WebView小, 缺点:不支持缓存和NSURLProtocol);允许JavaScript的Nitro库加载并使用(UIWebView中限制); 支持了更多的HTML5特性;高达60fps的滚动刷新率以及内置手势;增加estima转载 2016-07-04 16:12:24 · 399 阅读 · 0 评论 -
流媒体整理
下载本地播放必须全部将文件下载完成后才能播放渐进式下载(伪流媒体)不必等到全部下载完成后再播放,它可以一边下载一边播放,在完成播放内容之后,整个文件会保存在手机上。实时流媒体实时流媒体是一边接收数据包一边播放,本地不保留文件副本,实时流式传输总是实时传送,可以实时实况转播,支持随机访问,用户可以快进或者快退以观看前面或后面的内容。实时流媒体传输必须保证数据包的传输速度大于文件的播放速度,否则用户看到原创 2016-06-14 19:57:49 · 267 阅读 · 0 评论 -
iOS音频播放、录音、视频播放、拍照、视频录制
音频在iOS中音频播放从形式上可以分为音效播放和音乐播放。 前者主要指的是一些短音频播放,通常作为点缀音频,对于这类音频不需要进行进度、循环等控制。后者指的是一些较长的音频,通常是主音频,对于这些音频的播放通常需要进行精确的控制。 在iOS中播放两类音频分别使用AudioToolbox.framework和AVFoundation.framework来完成音效和音乐播放。音效AudioToolb原创 2016-06-13 21:51:44 · 582 阅读 · 0 评论 -
屏幕旋转
原理:把window窗口旋转项目需求:首页不横屏 从首页进入下一个控制器是一个播放界面,用于播放视频,该界面会自动旋转屏幕,并且可以手动旋转屏幕,可以锁定屏幕。1.首先,我们需要一个全局变量,来标示是否允许旋转,可以在AppDelegate.h文件中 如下声明(info.plist文件里面旋转设置不用管)@property (nonatomic,assign)BOOL allowRotation;这原创 2016-06-28 09:07:33 · 370 阅读 · 0 评论 -
Reactive Cocoa
http://www.jianshu.com/p/87ef6720a096RACSiganl简单使用: // RACSignal使用步骤: // 1.创建信号 + (RACSignal *)createSignal:(RACDisposable * (^)(id<RACSubscriber> subscriber))didSubscribe // 2.订阅信号,才会激活信号原创 2016-05-23 17:56:33 · 317 阅读 · 0 评论 -
URLSession慢慢整理
NSURLSessionConfiguration三种工作模式:默认会话模式(default):工作模式类似于原来的NSURLConnection,使用的是基于磁盘缓存的持久化策略,使用用户keychain中保存的证书进行认证授权。瞬时会话模式(ephemeral):该模式不使用磁盘保存任何数据。所有和会话相关的caches,证书,cookies等都被保存在RAM中,因此当程序使会话无效,这些缓原创 2016-04-28 17:25:20 · 1711 阅读 · 0 评论 -
重写UICollectionLayout报错解决
报错Logging only once for UICollectionViewFlowLayout cache mismatched frame UICollectionViewFlowLayout has cached frame mismatch for index path <NSIndexPath: 0xc000000001c00016> {length = 2, path = 0 - 1原创 2016-04-15 10:06:52 · 767 阅读 · 0 评论 -
解释Array拷贝区别
解释Array拷贝区别copy返回不可变对象,mutablecopy返回可变对象 注意:容器内的元素内容都是指针复制。1. 不可变数组copy NSArray *array = [NSArray arrayWithObjects:@"a",@"b",@"c",nil]; NSArray *arrayCopy = [array copy]; //arrayCopy是和array原创 2016-04-15 11:27:29 · 510 阅读 · 0 评论 -
交换Button中图片与文字左右位置
交换Button中图片与文字左右位置默认情况下,button的image和label是紧贴着居中的,那如果想要image在右边,label在左边应该怎么办呢?答案就是:self.oneButton.imageEdgeInsets = UIEdgeInsetsMake(0, labelWidth, 0, -labelWidth);self.oneButton.titleEdgeInsets = UI原创 2016-03-21 09:28:49 · 1586 阅读 · 0 评论 -
汉字装换为拼音
汉字装换为拼音// 汉字转换为拼音,字体首字母大小写- (NSString *)convertHanZiToPinYin:(NSString *)str{ NSMutableString *mutableStr = [str mutableCopy]; CFMutableStringRef strRef = (__bridge CFMutableStringRef)(mutableS原创 2016-04-05 21:41:26 · 369 阅读 · 0 评论 -
通讯录
只是自己的简单使用1. 导入头文件import <AddressBookUI/AddressBookUI.h>// 在ios9.0已经弃用//<AddressBookUI/AddressBookUI.h> 中的ABPeoplePickerNavigationController 被 ContactsUI.framework中的CNContactPickerViewController取代2. 简单原创 2016-04-05 15:07:34 · 370 阅读 · 0 评论 -
iOS9 联系人 ContactFramework
摘要 iOS9新的联系人相关框架更加易用美观。 iOS9 联系人 ContactFramework 感觉整理的很好,没有把效果图复制过来 转:http://my.oschina.net/u/2340880/blog/511995?p={{totalPage}}一、引言 在以前iOS开发中,涉及联系人相关的编程,代码都非常繁琐,并且框架的设计也不是Objective-C风格的,这使开发者用转载 2016-04-05 16:37:39 · 1613 阅读 · 0 评论 -
关于桥接
iOS - 关于桥接 转载:http://www.jianshu.com/p/8993143d4d05 字数433 阅读66 评论0 喜欢1 作者:Mitchell 孟晨 作者费不少劲写的,转载请注明出处,谢谢侬。 先引入一段示例代码:使用coreFoundation 带有Create 或者 Copy 产生的对象都有进行内存管理 CFRelease(对象名)// 桥接视情况而定;- (vo转载 2016-04-05 15:20:01 · 236 阅读 · 0 评论 -
转换时间为字符串
/** * 转换时间为字符串 */ NSDate *date = [NSDate date]; NSDateFormatter *fromatter = [[NSDateFormatter alloc] init]; fromatter.dateFormat = @"HH:mm"; NSString *timeStr = [fromatter原创 2016-03-23 11:46:10 · 271 阅读 · 0 评论 -
ios UI控件的简单整理
把该文件复制到.m文件里就能够方便的查找/** 匿名类目:可以声明方法和变量,属性为private(不允许在外部调用,且不能被继承 *//** 发送数据的委托方,接收数据的时代理发(即代理的反向传值) 委托方第一步:声明协议 委托方第二步:声明代理指针 委托方第三步:操作完成,告诉代理(即调用代理的方法) 代理第一步:遵守协议 代理第二步:成为代理 代理第三步:实现协议方法 *原创 2016-04-05 14:25:43 · 3548 阅读 · 1 评论 -
应用间跳转
1.添加当前应用的url types1:如果没有URL types,随意点一个key行后面+号,输入大写URL选择URL types 2:右键URL types,选择add row 3:item0下改成url identifier,后面的value值随意写,com.xx,xx 4:加一行,选择url schemes,item后面值写成你需要的,譬如上面的todolist,以后别的app就可以用原创 2016-04-05 12:52:37 · 240 阅读 · 0 评论 -
设置文字段落属性
// 设置段落属性 NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:subTitleLabel.text]; NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init]; st原创 2016-03-24 13:28:05 · 490 阅读 · 0 评论 -
顶部navigationbar设置为透明
//顶部navigationbar设置为透明 [[[self.navigationController.navigationBar subviews] firstObject] setAlpha:0.0];原创 2016-03-24 13:29:30 · 255 阅读 · 0 评论 -
本地通知
通知注册//In iOS 8.0 and later, your application must register for user notifications using -[UIApplication registerUserNotificationSettings:] before being able to schedule and present UILocalNotifications原创 2016-04-06 17:48:39 · 262 阅读 · 0 评论 -
UICollectionViewFlowLayout备忘录
UICollectionView的结构回顾CollectionView的构成,我们能看到的有三个部分:CellsSupplementary Views 追加视图 (类似Header或者Footer)Decoration Views 装饰视图 (用作背景展示)由两个方面对UICollectionView进行支持: 1. 和tableView一样,即提供数据的UICollectionViewDat原创 2016-04-14 16:56:38 · 198 阅读 · 0 评论 -
ios事件慢慢整理
事件分为三类:触控事件(单点、多点触控以及各种手势操作)传感器事件(重力、加速度传感器等)远程控制事件(远程遥控iOS设备多媒体播放等)在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。我们称之为“响应者对象” UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够原创 2016-04-27 16:17:18 · 218 阅读 · 0 评论 -
FMDB慢慢整理
来自: http://my.oschina.net/TaciturnKnightYQ/blog/617795一、FMDB架构图二、核心类FMDatabase一个FMDatabase对象就代表一个单独的SQLite数据库 用来执行SQL语句 FMDatabase这个类是线程不安全的,如果在多个线程中同时使用一个FMDatabase实例,会造成数据混乱等问题 为了保证线程安全,FMDB提供方便快捷原创 2016-04-27 14:43:58 · 397 阅读 · 0 评论 -
git慢慢整理
一. 本地使用1.初始化初始化一个Git仓库,使用git init命令。2.添加文件到Git仓库,分两步:第一步,使用命令git add <原创 2016-04-14 15:20:55 · 288 阅读 · 0 评论 -
UIScrollview 向下偏移
只要scrollView是其父视图上的第一个子视图,且navigationBar不隐藏的情况下,添加到scrollView里的视图,都会默认下移64个像素。 继承UIScrollview的UITableview也会出现这个问题。解决办法:1.最笨的方法:在scrollView之前加一个高度为0.1f的view来让scrollView成为第二个view 或者手动调节尺寸与位置。2. vc.auto原创 2016-04-12 11:21:57 · 1147 阅读 · 0 评论 -
NSInvocation慢慢整理
在 iOS中可以直接调用某个对象的消息方式有两种: 一种是performSelector:withObject; 再一种就是NSInvocation。第一种方式比较简单,能完成简单的调用。但是对于>2个的参数或者有返回值的处理,那就需要做些额外工作才能搞定。那么在这种情况下,我们就可以使用NSInvocation来进行这些相对复杂的操作。NSInvocationIOS中有一个类型是SEL,它的作转载 2016-04-07 21:25:35 · 306 阅读 · 0 评论