- 博客(203)
- 资源 (11)
- 收藏
- 关注
原创 Macos配置Jenkins自动打包环境-iOS篇
最近准备着手搭建一些方便团队开发工作顺利进行的工具平台,首先就从Jenkins打包开始吧。其实关于ios的自动化打包文章在网上已经有N篇了,但我还是决定要写下这边文章,不是为了庆祝自动打包成功,而是为了记录在成功之前遇到的所有问题的梳理和总结,能够直接或者间接的帮助到需要的客官。ok,那我们就开始正经的扯淡。1. 安装Jenkins此过程将一笔...
2018-09-30 19:18:00
639
原创 iOS梅开二度 - GCD之计数信号量(dispatch_semaphore_t)
文章必须有一个前言:在默默coding的时候,涉及到了一个点,就是某块代码的执行受到某一个变量的限制,如果当前变量为YES,则可以执行此块代码,但并不知道这个变量会在什么时候设置为YES;比较直接的思路就是监听变量值得变化,从而决定是否执行代码;不过还是想看看有没有更好(高大上)的方式,于是乎思虑万千,“等待”、“允许执行”、、、这几个词语轮回旋转,wait,对哦,信号量是个好东西,由此有了今...
2018-09-17 14:54:20
761
原创 iOS梅开二度 - 手势键盘的处理 (嗷嗷待哺版本)
写在文章的最前面:时隔三年半,我又重新拾起了博客,这三年多可能是我最飘忽不定的几年,也有诸多的感慨和体悟,本想专写一篇文章来对这几年的经历做一个总结,但每当要起头的的时候,都会不知所措,也可能是感触太多容易上头,也有可能是担心自己太过于多愁善感,索性就写在三年后的第一篇博客里面作为开头语吧。人生真的就是起起伏伏,从14年底加入到了一个新的家庭,对,我称之为“家庭”。可能是我运气不太坏进入到...
2018-09-08 11:20:51
718
原创 IOS-使用framework实现功能模块动态更新
测试Xcode版本为6.1.1实现过程简述:把想要的作为动态更新的模块,移动到我们创建的Framework工程中,然后得到我们想要的动态库文件,把此文件再通过iTunes放到“主程序”项目的document文件夹下,从而实现从主程序中去加载此动态库,从而实现功能模块的动态更新效果。理想效果为支付宝APP,而支付宝采用的是HTML5(网页)的形式实现的,这是目前最通用的实现方式,但是不适用于复杂
2015-03-05 13:54:06
25173
2
原创 IOS-录音功能
初始化AVAudioRecorder并设置录音的参数和存储地址://录音设置 NSMutableDictionary *recordSetting = [[[NSMutableDictionary alloc]init] autorelease]; //设置录音格式 AVFormatIDKey==kAudioFormatLinearPCM [recordSetting
2013-06-14 11:33:50
20836
原创 CGAffineTransformMakeRotation 实现旋转
实现一张图片的旋转部分角度显示:UIImageView *image = [[UIImageView alloc]init]; image.frame = CGRectMake(50, 50, 200, 200); image.image = [UIImage imageNamed:@"460.jpg"]; [self.view addSubview:image];
2013-06-05 17:48:26
54064
2
原创 IOS成长之路-使用系统默认声音、震动
导入框架:代码:#import #import @interface MsgPlaySound : NSObject{ SystemSoundID sound;//系统声音的id 取值范围为:1000-2000}- (id)initSystemShake;//系统 震动- (id)initSystemSoundWithName:(NSString
2013-05-31 17:23:58
61320
3
原创 IOS成长之路-检测耳机插入/拔出
导入苹果的两个框架是必不可少的环节。。。代码部分+小解:- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. AudioSessionInitialize (NULL, NULL,
2013-05-29 18:57:20
9527
原创 关于self.view.frame.size.width赋值会出现expression is not assignable 错误
下面的资料来自于:http://segmentfault.com/q/1010000000177216 self.view.frame.size.height = 100f;这样写没法通过编译,编译器会报错"expression is not assignable"原因是,这句话里面的几个点有两种不同的含义。self.view.frame是Objective-
2013-05-24 11:24:59
9439
原创 property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
You own any object you createYou create an object using a method whose name begins with “alloc”, “new”, “copy”, or “mutableCopy” (for example, alloc, newObject, or mutableCopy).一定要注意命名规范,不能以
2013-05-22 10:55:12
9197
原创 linker command failed with exit code 1 (use -v to see invocation)
这个问题的原因是 在 TARGETS --> Build Phases ---> Compile Sources 里面的某个.m文件多了一个或者少了一个1、多了一个,就是有两个相同的.m文件存在,在报出的bug中,会告诉我们,这个时候我们删除一个就好了2、少了一个,就是我们项目中.m 文件有 未添加进来的,点击左下角的加号,然后把未添加的.m文件添加进来
2013-05-17 10:02:51
23263
原创 IOS成长之路-NSMutableURLRequest实现Post请求
NSData *bodyData = [[bodyString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]dataUsingEncoding:NSUTF8StringEncoding];//把bodyString转换为NSData数据NSURL *serverUrl = [[NSURL URLWithString
2013-03-29 10:38:59
41881
原创 IOS成长之路-ASIFormDataRequest实现上传图片
UIImage *im = [UIImage imageWithContentsOfFile:path];//通过path图片路径获取图片 NSData *data = UIImagePNGRepresentation(im);//获取图片数据 /* ios中获取图片的方法有两种,一种是UIImageJPEGRepresentation ,一种是UIImagePNGRep
2013-03-29 10:13:26
14492
原创 svn: The log message is a pathname (was -F intended?); use '--force-log' to override
这个问题是因为在xcode使用svn上传项目的时候,如果在这个地方输入的名称与服务器上已经存在的名称冲突会报出这个错误,而且不能上传。要不然就是用 --force-log来强制上传
2013-03-14 19:14:11
5321
原创 CoreData-processPendingChanges和save
processPendingChanges改变当前对象的状态图; processPendingChanges类似于告诉字处理器在文档的编辑后更新它的内部状态,但不保存到磁盘。多用于用户界面上 更新数据;processPendingChanges常用在单独线程上运行多个上下文; 在MacOS下,它发挥了更大,更普遍的作用;save保存到磁盘;调用
2013-02-25 18:36:41
3910
原创 CoreData-实现数据永久性保存时产生的问题
在使用coredata 的时候,需要永久性保存数据, 使用 NSManagedObjectContext的 sava: 方法来实现。在这个过程中发现各种不能保存,于是乎花了两天的时候来解决它,搜寻各种办法,不过找到的办法无数却始终解决不了我的问题,最后发现了我的问题所在,却让我哭笑不得。总结在保存的时候遇到问题的解决办法:1、使用了多个线程操作同一个 NSManagedObject
2013-02-25 18:11:02
7489
原创 addsubview 的内存管理机制
本文章转载自:http://blog.sina.com.cn/s/blog_884e78b20100tmk8.htmlOC 属于C系列的语言,当然在编写程序的过程中当然也应该遵守C语言谁申请谁释放内存的原则。在这里我想说的是在IOS编程过程中经常会会用到的一个函数addSubview。在我们调用这个函数(比如是[self.view addSubview:tableview])之后,ta
2013-02-06 14:33:18
2245
原创 修改电脑WIFI网络的连接密码
当无线网络的密码被修改后,我们电脑的无线连接密码也要修改,过程:1、点击屏幕右上方的无线图标 。下拉菜单中的 打开网络偏好设置2、点击WIFI中的 高级 按钮3、点击 ‘-’ 号把想要修改的无线网络删除4、点击 ‘+’ 添加无线网络,把你想要使用的无线网络添加进去点击 选取网络 按钮:选取网络选取想要添加的网络,然后点击 好5、
2013-01-21 11:58:07
15341
原创 Could not change executable permissions on the application
Could not change executable permissions on the application.这个错误是因为 证书我们用了两次。就是说在真机上已经有了一个用了此证书的项目存在,只要把之前的项目从真机上删掉,这个项目就可以使用了。主要是会在使用推送的时候遇到这个问题,因为推送需要去申请一个推送的证书,而这个证书只能同时存在于一个项目中(真机中)。正所谓一山不容二虎。。
2013-01-21 10:50:07
3388
原创 iOS成长之路-获取系统键盘的高度
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; //UIKeyboardWillShowNotification键盘出现 [defaultCenter addObserver:self selector:@selector(keyboardWillShow:) name:UIKe
2013-01-10 11:00:13
4974
原创 IOS成长之路-调用照相机和相册功能
打开相机://先设定sourceType为相机,然后判断相机是否可用(ipod)没相机,不可用将sourceType设定为相片库 UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;// if (![UIImagePickerController isS
2013-01-04 17:05:44
104332
原创 IOS成长之路-推送(通过苹果服务器)
关于推送的机制和推送用到的证书问题在这里不多说。关于推送的代码部分:客户端:1、告诉应用程序,接收push来的消息(当然是放在 didFinishLaunchingWithOptions 方法里面了)[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotifi
2013-01-04 09:43:13
9753
原创 IOS成长之路-程序在后台运行(voip)
原理:在程序切入到后台后,每十分钟就去执行一个动作来唤醒程序,由此来保证它一直在后台运行。1、在Info.plist中添加UIBackgroundModes 键值让系统知道你的应用程序应该在适当的时候被唤醒2、在 - (void)applicationDidEnterBackground:(UIApplication *)application 切入后台执行的方法中执行下面代
2012-12-28 16:24:33
4298
原创 IOS成长之路-推送(本地推送)
1、打开本地推送并设置属性NSString *str = @"本地推送的信息"; UIApplication *app = [UIApplication sharedApplication]; UILocalNotification *notification = [[UILocalNotification alloc]init];//初始化本地推送 notificat
2012-12-28 15:40:04
2083
1
原创 IOS成长之路-code signing is required for product type 'Application' in SDK 'iOS 6.0'
解决之道:PROJECT --> Build Settings --> Code Signing --> Code Signing Identity设置为 iPhone DeveloperTARGETS --> Build Settings --> Code Signing --> Code Signing Identity设置为 iPhone Developer
2012-12-04 13:46:45
22836
原创 IOS成长之路-ASIHTTPRequest 断点续传
1.导入ASIHTTPRequest第三方类库下载地址:ASIHttpRequest类库 完整代码下载:下载2.在 .h 文件中#import #import "ASIHTTPRequest.h"#import "ASINetworkQueue.h"@interface DownLoadViewController : UIViewContro
2012-12-03 10:31:38
11646
4
原创 IOS成长之路-DES+Base64 加密、解密
DES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3次加密,如此以使得密文强度更高。相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准。用DES实现加密和解密的过程:(注释是我自己理解添
2012-11-14 21:09:52
26200
1
原创 IOS成长之路-获取设备的信息
NSLog(@"globallyUniqueString=%@",[[NSProcessInfo processInfo] globallyUniqueString]);//全球唯一标识 NSLog(@"uniqueIdentifie=%@",[UIDevice currentDevice].uniqueIdentifier);//唯一的标识 可用于区分设备 NSLog(@"nam
2012-11-14 19:27:08
7808
2
原创 IOS成长之路-MD5加密算法
-(NSString *)md5:(NSString *)str { const char *cStr = [str UTF8String];//转换成utf-8 unsigned char result[16];//开辟一个16字节(128位:md5加密出来就是128位/bit)的空间(一个字节=8字位=8个二进制数) CC_MD5( cStr, strlen(cStr)
2012-11-12 20:49:08
12164
原创 IOS成长之路-正则表达式的简单使用
在 4.0 之后,系统就有了它自己的类(NSRegularExpression,NSRegularExpression)来使用正则表达式,,之前都是要添加第三方类库 RegexKitLite 来使用这两个类的简单使用:NSString *str = @"3sdfh*odsi"; //匹配第一个字符是数字 NSRegularExpression *regex1
2012-11-09 15:18:31
3282
原创 IOS成长之路-Undefined symbols for architecture armv7s:解决之道
Undefined symbols for architecture armv7s: "_sqlite3_reset", referenced from: _initializeStatement in Parse(PF_FBCacheIndex.o)只因缺少了某个类库文件,我们只需去把它添加进去即可。在这里"_sqlite3_reset"
2012-11-08 17:55:04
14884
原创 IOS成长之路-关于iOS6.0 屏幕旋转的问题
1、首先在appDelegate中,把view添加到window中有两种方式、 self.window.rootViewController = self.view; [self.window addSubview:self.view.view];但是如果用第二种的话,在ios6.0中再去设置屏幕旋转是没有任何效果的,必须使用第一种。在ios6.0以前的版本是没有这种
2012-11-06 14:37:55
3200
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人