- 博客(14)
- 收藏
- 关注
原创 升级到xcode9 shell脚本自动打包失败
升级完xcode9 自动打包报: xcrun: error: unable to find utility “PackageApplication”, not a developer tool or in PATH Build step ‘Execute shell’ marked build as failure因为8.3以后把PackageApplication删除了, 一下是我的解决方
2017-09-21 12:31:44
2615
原创 升级Xcode到8.3.1报error: Invalid bitcode signature错误
把Xcode 升级到8.3.1之后,运行公司的一个项目发现总是报以下错误error: Invalid bitcode signatureclang: error: linker command failed with exit code 1 (use -v to see invocation)Apple Mach-O Linker (ld) Error Group clang: error: li
2017-04-19 17:22:20
14274
2
原创 Xcode恢复默认字体
前两天升级Xcode8觉得字体难看,就手贱把字体给改了,结果改了之后更难看,就想改回来Xcode –>Preferences –>Fonts&Colors 找到左下面的+选中Default新建一个Default选中新建的Default,就改回默认的字体了
2017-02-08 14:48:44
5162
原创 图片处理---缩放,挖取,截屏,旋转
1 给UIImage建一个Category,KHandle .h文件定义方法#import <UIKit/UIKit.h>@interface UIImage (KHandle)/*** 对指定的UI控件进行截图*/+ (UIImage *)captureView:(UIView *)targetView;/** * 截屏 */+ (UIImage *)captureScreen;
2016-12-29 15:18:21
816
原创 绘画板的实现
实现一个绘画板,用户可以根据自己的喜好进行任意的"涂鸦",绘画完成得到绘制的图片。为了实现这个应用,仅通过重写UIView的drawRect:方法是不行的,因为只实现drawRect:方法用户每次绘制的时候就会失去上一次绘制的内容,这样显然是不行的,还需要我们在内存中创建一张图片来保存用户上次绘制的内容,当用户开始绘图时通过重写drawRect:方法进行时实绘制,当用户想要绘制的图形确定下来时,将
2016-12-09 14:33:27
499
原创 Quartz 2D绘图的一般步骤
自定义UIView使用路径绘图的步骤如下1 调用 UIGraphicsGetCurrentContext()函数获取CGContextRef2 调用CGContextBeginPath(CGContextRef __nullable c)函数开始定义路径3 调用如下函数绘制子路径 4 如果路径添加完成,调用CGContextClosePath()函数关闭路径5 设置路径绘制的相关属性:线宽
2016-12-08 13:41:40
446
原创 iOS 文本绘制
1 新建一个工程 ,创建两个UISlider分别控制文字的缩放和旋转- (void)viewDidLoad { [super viewDidLoad]; UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(50, self.view.frame.size.height - 100, self.view.frame
2016-11-30 15:29:15
1561
原创 UIImage加载图片的方法及imageNamed和imageWithContentsOfFile的区别
UIImage常用的图片加载方法1 + imageNamed::该方法用于加载指定文件名称对应的图片,该方法有缓存机制,如果该方法试图加载的文件在缓存中不存在时,它才会去加载图片文件并缓存它;如果系统已经缓存过指定图片,该方法将直接使用缓存过的图片。2 +imageWithContentsOfFile::该方法用于加载指定文件名对应的图片,并不会将图片缓存起来。3 + imageWithDat
2016-11-28 13:56:04
855
原创 tcp三次握手四次挥手
三次握手TCP的三次握手是怎么进行的:客户端发送一个SYN=1,ACK=0标志的数据包给服务端,请求进行连接,这是第一次握手;服务端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给客户端,告诉它,可以通讯了,并且让客户端发送一个确认数据包,这是第二次握手;最后,客户端发送一个SYN=0,ACK=1的数据包给服务端,告诉它连接已被确认,这就是第三次握手。之后,一个TCP连接建
2016-11-25 13:27:24
325
原创 Block实现原理
新建一个工程在main函数中添加如下代码 #import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... int i = 2; void (^myBlock)() = ^
2016-11-23 14:21:22
335
原创 深copy和浅copy
NSCopying与NSMutableCopy协议怎么让我们自己定义的类可以调用copy或mutableCopy来复制一个对象的副本呢?1 定义一个User对象@interface User : NSObject@property (nonatomic ,strong) NSMutableString *name;@property (nonatomic ,assign) int age;
2016-11-22 12:34:53
840
原创 关于NSMutableArray线程安全的思考和实现
NSMutableArray是线程不安全的,当有多个线程同时对数组进行操作的时候可能导致崩溃或数据错误,下面是我对线程安全的几个思路,希望由此能给你带来一些思路,如果有错误的地方还希望大家能够指出 1. 第一次被问到对于 NSMutableArray线程安全你觉得应该怎么做的时候,我想当然的认为只对读写(add,remove,replace)操作加锁就可以了,当然这样可以保证线程的安全但是失去了
2016-11-17 16:32:51
12582
4
原创 iOS 单元测试
添加测试用例步骤及示例XCTest,它是Xcode7中内置的测试框架,使用起来非常简单 1.新建工程的时候添加测试单元 2.单元测试示例 咱们在这假设一个用户向主播送礼物场景,根据用户送的礼物不同消耗的代金币不同 User(用户)->Present(礼物)->Anchor(主播) Present类// Present.h// unitTestDemo//// C
2016-11-17 14:45:16
688
原创 dispatch_sync添加到主线程关联的串行队列卡死问题理解
- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"1"); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"2"); }); NSLog(@"3"); // Do any additional setup after loading
2016-11-15 15:39:36
3186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人