- 博客(32)
- 收藏
- 关注
转载 ios 多线程
概览大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算。可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行。但是机器码是按顺序执行的,一个复杂的多步操作只能一步步按顺序逐个执行。改变这种状况可以从两个角度出发:对于单核处理器,可以将多个步骤放到不同的线程,这样一来用户完成UI操作后其他后续任务在其他线程中,当CPU空闲时会继续执行,而此时对于
2015-10-31 23:24:54 442
转载 ViewController详解
一、生命周期当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序1、 alloc 创建对象,分配空间2、init (initWithNibName) 初始化对象,初始化数据3、loadView 从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图4、viewDid
2015-10-30 23:38:34 367
转载 sqlite第三方类库:FMDB使用
原文地址:2NSString *documentDirectory = [paths objectAtIndex:0];4FMDatabase *db = [FMDatabase databaseWithPath:dbPath] ;6 NSLog(@“Co
2015-10-29 13:59:54 300
原创 apple各种型号设备对应的Size Class
可以总结为: 如果项目不支持横屏显示,使用w:Compact h:Regular(或者直接取消使用Size Class) 如果项目支持横屏显示,使用w:Compact h:Regular+w:Any h:Compact 对于一些公有的约束(任意组合中都适用),一般放在w:Any h:Any中设置 iPad同理iPhone4
2015-10-01 10:15:17 519
原创 Effective Objective-C 2.0 学习笔记
第4条:多用类型常量,少用#define预处理指令编译单元内的常量,命名规则为变量名前加k// 实现文件static const NSTimeInterval kAnimationDuration = 2.25f;static NSString *const kConstant = @"VALUE"; 全局常量,命名规则为变量名前加类名// 头文件extern
2015-09-29 22:33:43 625
原创 在mac下配置github
参考http://www.cnblogs.com/heyonggang/p/3462191.htmlhttp://blog.csdn.net/daleiwang/article/details/31347387新建工程后Push,参考下面文章第6点http://www.2cto.com/kf/201504/390397.html其中创建目录和查看文件命令如下
2015-09-27 19:58:18 336
转载 Quartz 2D中的坐标变换
一、特殊的坐标变换(平移、缩放、旋转)1. - void CGContextTranslateCTM ( CGContextRef c, CGFloat tx, CGFloat ty ):平移坐标系统。该方法相当于把原来位于 (0, 0) 位置的坐标原点平移到 (tx, ty) 点。在平移后的坐标系统上绘制图形时,所有坐标点的 X 坐标都相当于增加了 tx,所有点的 Y 坐标都相当
2015-09-23 20:30:33 369
原创 使用AVSpeechSynthesizer朗读文字
使用苹果提供的语音合成器,可以通过简单的代码做到朗读文本。#import // 创建嗓音,指定嗓音不存在则返回nilAVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"]; // 创建语音合成器AVSpeechSynthesizer *synthesizer
2015-09-21 13:14:02 2813
转载 ios开发UIImage imageNamed方法的误用
[UIImage imageNamed:@"icon.png"]用上面的方法加载图片有问题。该方法即可以从bundle中读取图片。这种方法在application bundle的顶层文件夹寻找由供应的名字的图象 。如果找到图片,装载到iPhone系统缓存图象。那意味图片是(理论上)放在内存里作为cache的。因此如果图片资源多了或大了,此方式容易引起发生内存警告从而导致自动退出
2015-09-19 17:22:21 480
转载 实现 iOS 后台定位的两种方式
工作中碰到一个定位的应用场景:app需要在后台运行,实时上传用户地理位置。苹果对iOS的规范性在提升了app的品质的同时也带来了对开发者的限制。翻阅了各种官方文档和资料,得出结论如下:1、实现后台定位有2种方式:standard location service(调用CLLocationManager的startUpdatingLocation)signif
2015-08-13 08:34:30 741
原创 Foundation Framework 文件 NSFileManager
参考文章http://nshipster.cn/nsfilemanager/确定文件是否存在NSFileManager *fileManager = [NSFileManager defaultManager];NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirector
2015-08-07 16:35:00 489
原创 表视图 TableView 的使用
1、新建接口 TableViewCell ,用于显示单元格的内容@interface RegionTableViewCell : UITableViewCell@property (strong, nonatomic) IBOutlet UILabel *regionName;@property (strong, nonatomic) IBOutlet UIImageView *regio
2015-08-07 13:01:53 404
原创 UIKit 滚动视图 UIScrollView
为滚动视图添加子视图,推荐使用代码的方式,不推荐嵌入视图的方式UIImage *image = [UIImage imageNamed:@"imageName"];UIImageView *imageView = [[UIImageView alloc] initWithImage:image];[self.scrollView addSubview:imageView];设置滚动
2015-08-06 16:05:49 421
原创 动画 Core Animation 直接修改视图属性
UIView视图的动画功能,可以使在更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验。UIView可以产生动画效果的变化包括:位置变化:在屏幕上移动视图。大小变化:改变视图框架(frame)和边界。拉伸变化:改变视图内容的延展区域。改变透明度:改变视图的alpha值。改变状态:隐藏或显示状态。改变视图层次顺序:视图哪个前哪个后。
2015-08-05 16:46:28 677
原创 UIKit 手势识别 UIGestureRecognizer
1、创建手势识别器,并添加到视图中创建手势识别器,其中参数 initWithTarget 指出了处理手势的对象,参数 action 指出了处理手势的方法名。UIPinchGestureRecognizer *pinchRecognizer= [[UIPinchGestureRecognizer alloc] initWithTarget:self
2015-08-05 07:45:38 686
原创 UIKit 视图 UIView
UIView的两种创建方式1、通过 storyboard 进行创建2、通过代码创建 [[UIView alloc] initWithFrame:(CGRect)],可以用 CGRectZero 作为参数示例:CGRect rect = CGRectMake(0, 0, 50, 60);UILabel *label = [[UILabel alloc] initW
2015-08-05 07:21:06 394
原创 设计模式 观察者 NSNotificationCenter
默认的广播站,类似 NSUserDefault 的共享实例[NSNotificationCenter defaultCenter]; 注册观察者,开始收听广播[[NSNotificationCenter defaultCenter] addObserver:(id)observer // 收听广播的观察者,控制器是最常见的观察者,所以此参数通常为self
2015-07-31 10:10:59 369
原创 UIKit 视图的生命周期
viewDidLoad只会在屏幕出现前执行一次,在此处可以t添加一次性的初始化代码,但是此时屏幕视图并没有构建出来,因此,在此处无法获得视图的相关几何信息,从而无法确定用户的屏幕尺寸。- (void)viewDidLoad { [super viewDidLoad]; // 添加初始化信息}视图即将出现在屏幕上时,viewWillAppear 会被调用,当存在
2015-07-30 11:33:42 510
原创 UIKit 带属性的字符串 NSAttributedString、NSMutableAttributedString、NSTextStorge(未完成)
NSAttributedString是一个带有属性的字符串,通过该类可以灵活地操作和呈现多种样式的文字数据。NSTextStorge是NSMutableAttributedString的子类NSString *string = @"你知道怎么在一个label设置不同的颜色嘛?"; NSMutableAttributedString *attrString = [[NSMut
2015-07-30 09:20:26 450
原创 Foundation Framework 轻量级本地数据存储 NSUserDefaults
NSUserDefaults是一种轻量级本地数据存储,是一个永久的NSDictionary,适合存放少量数据,操作方便,但仅支持NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型//保存数据到NSUserDefaults -(void)saveNSUserDefaults {
2015-07-29 16:23:19 394
原创 Foundation Framework 字典 NSDictionary
NSDictionary 可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,字典中所有对象都是strong类型的指针。创建字典的两种方式,可变字典不能使用第二种方法NSDictionary *tires = [NSDictionary dictionaryWithObjectsAndKeys: t1, @"tire 1", t2, @"
2015-07-29 15:09:56 349
原创 Foundation Framework 基本数据封装 NSNumber、NSValue、NSData
NSNumber、NSValue、NSData用于将C语言基本数据类型封装成类对象,从而可以通过 NSArray、NSDictionary 来存取。NSNumber 用于封装基本数值类型,创建NSNumber的两种方法:NSNumber *number;number = [NSNumber numberWithChar:'X']; // 字符型number =
2015-07-29 10:41:16 343
原创 Foundation Framework 数组 NSArray、NSMutableArray
NSArray 数组NSArray是一个有序的、可变的集合,一旦创建则不能添加、修改、删除。数组中所有对象都是strong类型的指针。创建数组的两种方法,可变数组不能使用第二种方法。NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];NSArray *array = @[@"one"
2015-07-29 09:34:05 308
原创 Foundation Framework 常用类使用方法
NSObjectdescription方法是NSObject自带的方法,包括类方法和对象方法,用于输出描述类或对象的字符串。NSObject(NSString *)description(){ return [NSString stringWithFormat:@"姓名: %@ 年龄: %d",name,age];}自定义类需要自己实现下面两个拷贝方法。-(id
2015-07-29 08:19:15 368
原创 iOS中的基本 UI 控件的使用
UILabelself.touchCountLable.text 获取 Label 的字符串UIButtoncurrentTitle Button上的字符串setBackgroundImage 设置背景图片setTitle 设置按钮上的字符串UIImageimageNamed 根据指定字符串获取image
2015-07-26 22:12:36 376
原创 iOS中的类、属性的创建、使用流程
OC中每一个类都有一个.h文件和.m文件,.h文件存放公共的API,其他模块可以调用,.m文件文件存放私有API和所有的接口实现。示例:Card.h 文件:#import @interface Card : NSObject@property (strong,nonatomic) NSString *contents;@property (nonat
2015-07-26 11:12:12 438
原创 Foundation Framework 日期 NSDate
NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间。1、获取当前时间NSDate * dt = [NSDate date];//获取的时间date减去24小时的时间(昨天的这个时候) NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-(24*60*60)];2、将 NSD
2015-07-22 14:41:18 355
原创 自定义数据类型的序列化
1、为自定义数据类型添加 NSCoding 协议,实现该协议的接口- (void)encodeWithCoder:(NSCoder *)aCoder;- (id)initWithCoder:(NSCoder *)aDecoder;2、序列化对象的属性id 类型的属性直接用 aCoder encodeObject: forKey: 序列化;基础数值类型要用 NSNumber
2015-07-20 19:02:56 519
原创 页面跳转与数据传递
使用 segue 实现页面跳转[selfperformSegueWithIdentifier:@"EditNewRegion"sender:nil];
2015-07-18 18:31:37 367
原创 地球坐标转换成火星坐标的代码
// 火星坐标系转换扩展,.h文件/* 从 CLLocationManager 取出来的经纬度放到 mapView 上显示,是错误的! 从 CLLocationManager 取出来的经纬度去 Google Maps API 做逆地址解析,当然是错的! 从 MKMapView 取出来的经纬度去 Google Maps API 做逆地址解析终于对了。去百度地图API做逆地址解析,依旧是错
2015-07-16 16:41:02 794
转载 @property和@synthesize的一些见解
@property和@synthesize有以下两个作用:1.作用一@property是在头文件.h中声明一个变量的setter和getter方法。@synthesize是在m文件中定义setter和getter方法的实现。2.作用二@property,在声明变量方法的时候可以附加定义该变量的属性。如retain,assign,readonly,nona
2015-06-15 06:09:42 259
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人