- 博客(95)
- 资源 (2)
- 收藏
- 关注
原创 Runtime
Runtime交换系统的方法SEL、IMP、ISA交换系统的方法在项目中经常会遇到统计用户使用习惯,例如用户进入某个页面的频次,如果在每个页面增加统计的方法那么会增加很多的重复代码,可以使用运行时的特性在分类中交换方法达到目的,交换系统的方法并且不需要重新导入头文件就可以达到,但是如果两个分类分别执行相同的操作去交换同一个方法那么会交换无效,方法名不同只会执行后面的。在不改变原有方法的效果上...
2020-03-25 17:17:09
249
原创 review
Block_NSConcreteGlobalBlock,全局block存放在静态区,block没有使用外部变量情况。_NSConcreteStackBlock,在调用的了外部变量或并且未被copy,使用完后自动销毁_NSConcreteMallocBlock,对stack block进行copy后变成堆,需要手动释放 void(^globalBlock)(void) = ^(){ ...
2020-03-25 09:26:37
253
原创 制作MAC OS Framework记录
在iOS上已经制作好的SDK移植到mac上遇到的问题:1.删除iOS上存在的UIKit类,mac os 中不支持UIKit类2.在Mac os 项目中添加Target–>Cocoa Framework,将iOS中famework中的代码移到现在target中.3.找不到第三库的,需要在user header search path 中添加$(SRCROOT)/第三方存放路径4.当移除...
2019-07-23 17:50:53
1249
原创 iOS 制作Framework中包含第三方库
记录下在制作Framework中遇到的问题:1.如果framework中包含分类,需要在build setting中搜索other link flag 添加‘-ObjC’.要不然会报错。2.对于第三库的处理,为了防止第三库与外部产生冲突在Framework中加入库的时候不要勾选copy item if need.3.项目中引入第三库报找不到文件提示,需要在User search path 中...
2019-07-18 12:45:35
3428
1
原创 iOS 二维码扫描优化记录
1.原生从相册中识别二维码图片成功率低感谢SGQRCode中提到压缩图片至手机屏幕大小再进行扫描,需要更多的参考在git中搜索SGQRCodeExample从图片中获取二维码的方法 CIDetector*detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{ CIDet...
2018-07-27 19:25:23
2884
原创 MMDrawerController 手势与系统导航返回手势冲突
push后发现左滑返回偶尔返回到主界面,偶尔又返回到左侧菜单页,当所有的controller都继承自基类处理方法在 viewWillAppear和dissAppear中进行打开和关闭操作(判断类型).if ([self isKindOfClass:NSClassFromString(@"xxx")] ) { //判断需要打开滑动菜单手势的类 [self openMMD...
2018-06-08 11:58:08
768
原创 Python笔记
python语法 搞了前端太久了,总想去改变下,最近开始接触学习python,做一个学习过程的记录当作一次回忆,路漫漫还有很多的地方需要时间去学习去理解,感觉python和其它的语言相比有时有点怪异,有时会感觉一脸懵逼,慢慢消化吧 与一般语言不同的,python严格按照代码的缩进进行执行. “=”刚开始以为python中的“=”与其他的等号一样使用,其实这个区别还蛮大既然...
2018-05-03 11:00:36
328
原创 iOS网络字节序列转换
iOS网络字节序列转换最近项目使用字节流的方式传输数据,数据包中包含数据的大小等相关的一些基础信息需要将字节转换成网络字节流的方式进行传输,因为之前一直使用的是Http或者用分隔符的方式去解决socket传输中引起的粘包问题,第一次接触网络字节流的概念.后来查询才知道原来对于不同的系统和不同的cpu中转换相同的数据可能大端和小端在字节的排序是不一致的,为了保持统一,出来了一个网络字节流的标准。 在
2017-06-29 16:24:42
1482
原创 ProtocolBuffer在Swift中实践记录
前几天搞了object-c中使用ProtocolBuffer,今天尝试在swift中也使用该协议进行传输协议。折腾了一上午终于搞定了,记录下在部署中所遇到的坑和自己实现的步骤。1、安装protoc 命令和objectc安装方式是一样的,不知道可以看上一篇文章.2、确保protoc命令可以生成对应的文件后,在部署过程中发现生成swift文件的时候总是报错“--swift_out: pro
2017-05-18 17:08:49
2539
2
原创 iOS集成谷歌ProtoBuff
项目中需要使用scoket传输数据流采用谷歌的ProtoBuff协议进行传输.我使用的安装方式是借鉴点击打开链接博主提供的方法.安装完成之后在/usr/local/bin中存在protoc执行文件该执行文件用来生成.h/.m文件安装完之后github中下载最新的protobuff object-c代码.下下来之后有点坑的地方是,代码中得文件很散乱,demo中得一些头部文件还引用
2017-05-16 15:51:23
734
原创 ios 使用自带的UIViewController实现qq加号下拉菜单的功能
创建PopViewControlller在tableview中创建一个tableview用于显示菜单//重置控制器的大小-(CGSize)preferredContentSize{ if (self.popoverPresentationController != nil) { CGSize tempSize ; tempSize.height
2017-05-11 14:50:12
1253
原创 iOS 开发者账号添加新的管理成员用于上传APP
由于之前申请app账号的同事离职了,每次用之前的账号上传app如果出现错误不能接收到错误邮件,重新添加一个管理员用以上传app用.1.申请一个APPID 账号2.登录开发者账号,在people中添加新的成员。3.发送邮件给新增的用户邮箱。4.接收到确认邮件,使用申请的账号登录。5.接收到appid申请的加入团队的请求。6.回到iTunes connect 用户职能中
2017-03-21 16:31:29
8341
2
原创 计算时间
NSDate *date = [NSDate date]; NSString *title = @""; NSCalendar *calendar = [NSCalendar currentCalendar];//日历 NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalen
2017-03-15 14:11:35
432
原创 Facebook 登录自定义按钮
- (void)_updateContent:(NSNotification *)notification { NSInteger slot = 0; FBSDKProfile *profile = notification.userInfo[FBSDKProfileChangeNewKey]; if (profile) { SUCacheItem
2016-11-02 14:16:44
4101
原创 iOS 10 权限
麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风? 相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机? 相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库? 通讯录权限: Priva
2016-09-27 16:59:24
414
原创 使用GCDAsyncUdpSocket&GCDAsyncSocket进行TCP连接和UDP连接
UDP初始化完后需要绑定端口号才能发送数据后接受到返回结果TCP初始化连接前需要先关闭连接。测试代码#import "P2PConnect.h"static NSString *hostAdress = @"服务器地址";static uint16_t serverPort = 1服务器端口;@implementation P2PConnect{ GCDAsyncSock
2016-06-22 18:27:49
4019
原创 pods
使用cocoapods时,import 找不到头文件。问题原因:这是因为还没设置头文件的目录。解决办法:在项目的Target的里设置一下,添加cocoapods头文件目录:目录路径直接写:${SRCROOT} ,后边选择recursive 。就可以了。注意:是在 User Header Search Paths 里添加,不是上面的 Header Search Paths.pod
2016-06-16 18:25:40
727
原创 ios Method Swizzling学习笔记
Method Swizzling我的理解是运用Runtime获取类与类之间的方法,并且可以进行对换,从而达到某些目的,但是通过学习感觉和继承或者分类上使用父类的方法差不多,这种方式去搞,反而有点让接手的人不知所然,只是让外人觉得略微显得有点逼格一点。学习代码创建三个类,FOO、Bar、BarCategatory#import @interface Foo : NSObject-
2016-04-14 17:57:03
350
原创 修改tableview开启多选编辑模式下选中按钮的图片
-(void)layoutSubviews{ [super layoutSubviews]; for (UIControl *control in self.subviews){ if ([control isMemberOfClass:NSClassFromString(@"UITableViewCellEditControl")]){
2016-04-14 15:26:48
1932
原创 常用工具和库下载地址
http://blog.sina.com.cn/s/blog_73dc36510101ahim.html photoShop破解地址和文件下载
2016-04-11 10:18:02
398
转载 转载ios开发如何使用Xcode的Targets来管理开发和生产版本的构建
如何使用Xcode的Targets来管理开发和生产版本的构建2016-03-31 06:18 编辑: suiling 分类:iOS开发来源:CocoaChina翻译活动27 7171 XCode招聘信息:高级PHP开发工程师iOS高级研发工程师iOS开发工程师高级iOS手机应用软件开发工程师(培训讲师)高级Cocos2d-x游戏开发工程师
2016-04-07 17:56:21
403
原创 ios自定义返回按钮后没有滑动返回手势处理方法
A push B push C在C中不需要加以下代码在A视图中增加下面代码-(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; self.navigationController.interactivePopGestureRecognizer.enabled = NO;}在Apus
2016-03-21 11:02:09
1225
转载 ios MM-dd-yyyy hh:ss pm 转成yyyy-mm-dd hh:ss
NSString *currentDateString = @"8/5/2011 1:38:13 PM"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //Set the AM and PM symbols [dateFormatter setAMSymbol:@"AM"];
2016-03-11 16:21:21
1807
原创 xib自定义View
创建view class 创建view xib设置view的classowner创建xib的文件名和view的classname最好一样在controoler中使用以下方法使用 //获得nib视图数组 NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"BookingManageHeaderView" own
2016-02-23 09:54:46
286
原创 NSMutableAttributedString同一个label中显示不同的字体样式
NSMutableString *mutableStr = [NSMutableString stringWithString:[NSString stringWithFormat:@"累计个人总收入:¥%@",achievementStr]]; NSRange range = [mutableStr rangeOfString:[NSString stringWithFormat:@"¥
2016-02-22 16:04:47
343
转载 转载http://www.cnblogs.com/kenshincui/p/3931948.html
代码改变世界Posts - 71, Articles - 0, Comments - 1397 CnblogsDashboardLoginHomeContactGalleryRSSKenshin Cui's BlogCODING 完美世界... iOS开发系列--UITableView全面解析2014-08-23 23:20 by Kensh
2016-02-18 17:51:18
1145
原创 ios本地通知
首先在注册通知 if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){ [application registerUserNotificationSettings:[UIUserNotificationSettings setti
2016-02-01 16:58:40
287
原创 计算脸部部位在坐标系中的位置
CIImage* image = [CIImage imageWithCGImage:aImage.CGImage]; NSDictionary *opts = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh
2016-01-21 10:47:57
1079
原创 修改searchBar搜索框的删除按钮颜色值
[_searchBar setImage:[UIImage imageNamed:@"技师_搜索_删除按钮"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal]; UITextField *txfSearchField = [_searchBar valueForKey:@"searchField"];
2016-01-14 14:14:36
1650
转载 java文件读写操作
file(内存)----输入流---->【程序】----输出流---->file(内存)当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编
2016-01-06 10:42:10
426
原创 MAC下配置Tomcat环境
首先到http://tomcat.apache.org/download-90.cgi下载最新的版本,Mac下选择下载zip格式。下载后解压缩将文件保存在资源库中,更名为Tomacat9在拷贝到这个目录下会提示输入用户密码,接着打开终端输入命令安装Tomacat,在安装之前用sudo chmod 755 /Library/Tomacat9/bin/*sh先给该目录下的.sh文件权限
2016-01-04 17:14:26
530
原创 Masonry学习
使用Masonry Lable自动适应文字宽度高度,设置Label的最大宽度值preferredMaxLayoutWidth并且设置numberOfLines=0,才有效果#pragma mark - 滚动视图自适应-(void)testScrollView{ self.testScrollerView = [[UIScrollView alloc] init]; self.
2015-12-29 14:17:41
2790
原创 IOS 图片压缩保存
创建一个UIImage+Category用于压缩图片处理/** * @brief 压缩照片 * @parma img:目标图片 * @parma newSize:压缩至目标尺寸 */-(UIImage *)compressImageWithImage:(UIImage *)img scaleToSize:(CGSize)newsize{ UIGraphicsBegin
2015-12-22 10:25:54
452
原创 IOS 判断定位服务是否开启代码
if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized || [CLLocationManager authorizationStatus] == kCLAuthor
2015-12-22 10:18:10
981
原创 切换VC的时候内存溢出崩溃
在ios8.1.2上跑APP在两个VC中相互切换,崩溃信息0libobjc.A.dylib0x0000000197cdfbd0objc_msgSend (scrollViewDidScroll:) + 161UIKit0x000000018aa90b9c-[UIScrollView setContentOffset:] + 500
2015-12-19 16:49:30
1876
原创 OC用Dispatch处理并发完成所有任务之后执行最终的结果
dispatch_queue_t queue = dispatch_queue_create("queueName", DISPATCH_QUEUE_CONCURRENT); dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, queue, ^{ NSLog(@"
2015-12-17 13:31:58
783
日期处理类
2015-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人