- 博客(98)
- 收藏
- 关注
转载 UIView的bounds和frame属性区别
一、首先列一下公认的资料:先看到下面的代码你肯定就明白了一些:-(CGRect)frame{ return CGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height);}-(CGRect)bounds{ return CGRe
2016-03-05 18:06:49 769
转载 Content hugging和Content compression resistance
本文举了3个比较有“特点”的Autolayout例子,源于微博上好友的提问,感觉比较有意思,也比较有代表性,就写了出来,分享给大家~至于为什么用Masonry,那是因为它好用啊!(被问到过有关Masonry的问题,就索性用它来实现吧=。=)。效果图Github地址https://github.com/zekunyan/AutolayoutExampleWit
2016-03-03 15:59:36 611
转载 copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别
copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别 最近在学习iOS的过程个遇到了不少问题,知道概念也看过示例代码,但是就是写不出来或者不知道怎么去用。一种遇到最多的时候就是在申明一个属性的时候,比如:@property (?, ?) ?
2016-03-01 18:10:08 590
原创 30 Foundation框架之NSKeyedArchiver和NSKeyedUnarchiver
30 Foundation框架之NSKeyedArchiver和NSKeyedUnarchiverTags: Objective-CNSKeyedArchiver表示归档,表示把对象转换为可保存可传输的数据流,通常可以是文件或者URL。 NSKeyedUnarchiver表示恢复归档,表示从数据流中恢复对象。NSKeyedArchiver和NSKeyedUnarchiver有两种使用方式,第一种是
2015-12-09 01:14:15 1067
原创 29 Foundation框架之NSURL
29 Foundation框架之NSURLTags: Objective-CNSURL代表了互联网上的一个文件的统一资源定位符。其格式如下: schema://host:port/path如http://www.abc.com:8080/index.php中,scheme为http,host为www.abc.com,port为8080,而path为/index.php。NSURLTest.m#
2015-12-09 01:13:53 702
原创 28 Foundation框架之NSFileHandle
28 Foundation框架之NSFileHandleTags: Objective-C前面我们讲过NSFileManager对象,主要用来创建、删除、复制、移动文件或者目录。那么如果需要对文件进行写入和读取操作时候,我们应该使用NSFileHandle,通常来说,使用NSFileHandle的基本步骤如下:创建一个NSFileHandle用来打开指定的文件(这个文件如果不存在的话会返回nil,
2015-12-09 01:13:30 664
原创 27 Foundation框架之NSProcessInfo
27 Foundation框架之NSProcessInfoTags: Objective-CNSProcessInfo对象是用来获取进程的相关信息,包括进程的参数、PID、进程所在的系统的主机名、操作系统名、操作系统版本等等。NSProcessInfoTest.m#import <Foundation/Foundation.h>int main(int argc, const char * argv
2015-12-09 01:13:09 3001
原创 26 使用NSPathUtilities.h管理路径
26 使用NSPathUtilities.h管理路径Tags: Objective-CNSPathUtilities.h包含了对NSString的扩展,添加了一些专门用来操作路径的方法。下面是代码示例: NSPathUtilitiesTest.m#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {
2015-12-09 01:12:51 1068
原创 25 Foundation框架之NSFileManager
25 Foundation框架之NSFileManagerTags: Objective-CNSFileManager表示文件管理器对象,通过该对象可以完成一些文件管理。比如访问指定路径的文件属性及内容,创建、删除、移动、复制文件或目录,查看指定目录下的包含的内容等。代码测试如下: NSFileManagerTest.m#import <Foundation/Foundation.h>int ma
2015-12-09 01:12:32 864
原创 24 Foundation框架之NSData和NSMutableData
24 Foundation框架之NSData和NSMutableDataTags: Objective-CNSData代表了数据缓冲区,主要作用用来封装数据。代码示例如下:NSDataTest.m#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool {
2015-12-09 01:12:12 797
原创 23 Foundation框架之NSPredicate
23 Foundation框架之NSPredicateTags: Objective-CNSPredicate对象:也称作谓词对象,用来定义一个逻辑条件,通过该条件可以执行搜索或者过滤操作。谓词表达式中支持的语法:关系运算符: 1 =或==:等于 2 >=或=>:大于等于 3 <=或=<:小于等于 4 >:大于 5 <:小于 6 !=或<>:不等于 7 BETWEEN:
2015-12-09 01:11:50 770
原创 22 Foundation框架之NSDictionary和NSMutableDictionary
22 Foundation框架之NSDictionary和NSMutableDictionaryTags: Objective-CNSDictionary也是一种集合,跟NSSet不一样的地方在于它是key-value键值对,可以通过key索引来添加或者删除value。在一个NSDictionary对象中,每一个key必须是唯一的,但是不同的key对应的value可以相同,用key-value共同判
2015-12-09 01:11:31 823
原创 21 Foundation框架之NSSet、NSMutableSet、NSCountedSet、NSOrderedSet、NSMutableOrderedSet
21 Foundation框架之NSSet、NSMutableSet、NSCountedSet、NSOrderedSet、NSMutableOrderedSetTags: Objective-CNSSet:集合。是NSObject的子类,跟NSArray不一样在于,NSArray的元素是有序的,可以通过索引访问,而NSSet的元素是无序的,不能通过索引访问;NSArray的元素可以是重复的,而NS
2015-12-09 01:11:11 3437
原创 20 Foundation框架之NSAarry和NSMutableArray
20 Foundation框架之NSAarry和NSMutableArrayTags: Objective-CNSAaary:数组,可以通过索引访问,不可变。 NSMutable:可变数组,可以增添删操作,可变。20.1 NSAarry的用法下面是对NSAarry的一些方法使用示例,代码如: NSArrayTest.m#import <Foundation/Foundation.h>int ma
2015-12-09 01:10:45 1357
原创 Xcode 6/7添加创建Empty Application方式
XCode 6/7添加创建Empty Application方式XCode 6/7中取消了创建Empty Application方式,我们可以通过如下方式添加。该项目的源码地址为:Xcode-Empty-Application-Template添加方法如下: 1. 下载项目源码 2. 将Empty Application.xctemplate目录拷贝到{Xcode.app}/Contents/D
2015-12-09 01:09:21 562
原创 19 NSCopying与NSMutableCopying协议+深复制和浅复制
19 NSCopying与NSMutableCopying协议+深复制和浅复制Tags: Objective-C19.1 NSCopying与NSMutableCopying协议在018章,我们举例了NSString对象和NSMutableString对象的copy及mutableCopy方法,用copy方法能得到字符串的不可变副本,而mutableCopy方法能得到字符串的可变副本。 但是如果对
2015-12-08 04:24:54 1487
原创 18 对象的copy与mutableCopy方法
18 对象的copy与mutableCopy方法Tags: Objective-Ccopy方法:copy方法用来复制对象,产生一个不可变副本,不论对象本身是可变的还是不可变的,用copy方法产生的副本都是不可变的副本。比如调用NSMutableString对象的copy方法产生的对象是NSString对象。mutableCopy方法:mutableCopy方法用来复制对象,产生一个可变副本,不论
2015-12-08 04:22:37 681
原创 17 Foundation框架之NSDate、NSDateFormatter、NSDateComponents、NSCalendar、NSLocale、NSTimer
17 Foundation框架之NSDate、NSDateFormatter、NSDateComponents、NSCalendar、NSLocale、NSTimerTags: Objective-CNSDate:日期与时间。 NSDateFormatter:日期格式器。用来转换NSDate和NSString。 NSDateComponents:日期组件。包含了对NSDate中的year、mon
2015-12-08 04:21:31 542
原创 16 Foudation框架之NSString和NSMutableString
16 Foudation框架之NSString和NSMutableStringTags: Objective-CNSString是NSMutableString的父类,前者代表不可变字符串,后者代表可变字符串,前者初始化后就不可修改,后者可以修改内容。这两个类的API就不列出来了,代码示例如下:main.m//// main.m// 07.1//// Created by gankai
2015-12-08 04:19:43 462
原创 15 手动内存管理
15 手动内存管理Tags: Objective-CXCode5以前,对象的内存管理都需要手动管理,后来有了ARC之后才不需要手动管理,但是理解手动内存管理有助于我们编写更高效率的代码。对象的引用计数规则: 1. 当调用以alloc、new、copyXXX、mutableCopyXXX名字开头的方法创建对象时,对象的引用计数加1。 2. [objectPointer retain] 对象的引用
2015-12-08 04:18:28 495
原创 14 反射
14 反射Tags: Objective-COC中的反射跟Java中的一个道理,一般我们理解为动态调用,下面有几个名字概念。Class对象:Class类型的对象,这些对象是各个类,假设有Person类、Man类、Woman类三个类,那么Class类型的对象就可以是Person类、Man类、Woman类。SEL对象:SEL类型的对象,这些对象是各个方法,OC中也称之为selector,表示具体的各
2015-12-08 04:15:16 569
原创 13 异常
13 异常Tags: Objective-COC中的异常跟Java类似,使用@try{} @catch{} @finally{}来指示,一般来说@try块是必须的,而@catch和@finally块是可选的,二者可以同时存在也可以只有一个。下面是代码示例: GKHEatable.h#import <Foundation/Foundation.h>@protocol GKHEatable <NSOb
2015-12-08 04:09:36 872
原创 12 协议
12 协议Tags: Objective-C协议:用@protocol来指定,相当于Java中的接口,一般用来定义一些通用的方法规范,这些方法只有声明而不需要实现,协议提供给类使用后需要在类的实现部分实现类遵守的所有协议中的方法。在OC中,类不能多重继承,而协议可以,一个协议可以继承多个不同的协议形成一个新协议,类的interface部分指定了类的父类是谁,遵守了哪些协议,定义语法如下:@inter
2015-12-08 04:07:31 726
原创 11 类别(category)和扩展(extension)
11 类别(category)和扩展(extension)Tags: Objective-C类别(category):当定义一个类时,需要额外动态添加一些方法,这个时候就要对它进行分类。比如有一个类Person,头文件为Person.h,实现文件为Person.m,在不更改Person.h和Person.m的情况下,需要对Person添加两个分类:study和work,study分类中包含了Pers
2015-12-08 04:05:56 538
原创 10 包装类(NSValue和NSNumber)
10 包装类(NSValue和NSNumber)Tags: Objective-CNSValue和NSNumber都是包装类,NSValue是NSNumber的父类。 NSValue是一个更通用的包装类,可以包装short、int、long、float、char、指针、对象id等数据项,将这些包装进去后就可以把short、int、long、float、char、指针等添加到NSArray、NSSe
2015-12-08 04:04:36 561
原创 09 多态
09 多态Tags: Objective-C多态直接贴代码解释吧,跟C++差不多。 GKHBase.h#import <Foundation/Foundation.h>@interface GKHBase : NSObject- (void) base;- (void) test;@endGKHBase.m#import "GKHBase.h"@implementation GKHBase-
2015-12-08 04:03:08 372
原创 08 继承
08 继承Tags: Objective-C继承是面向对象的三大特征之一,下面我们举个例子,Person类继承于NSObject,Student类继承于Person,Person类有name、age、nation三个属性,而Student类在这基础上增加了score属性有四个属性;其中在Person类中通过@property生成的_name、_age成员变量是private的,而nation的成员变
2015-12-08 04:01:47 475
原创 07 类的初始化和重写description方法
07 类的初始化和重写description方法Tags: Objective-C在定义一个类的时候,我们通常要定义构造方法,而一般来说构造方法分为两种,以init开头的实例构造方法以及类名开头的类构造方法,后者也称静态构造方法。下面是代码实例:Person.h#import <Foundation/Foundation.h>@interface Person : NSObject@property
2015-12-08 03:59:54 442
原创 06 KVC与KVO
06 KVC与KVOTags:Objective-C6.1 KVCKVC(Key Value Coding):键值编码,是一种修改对象的属性和访问对象的属性的技术,当然我们也可以用 对象名->成员变量名 或者 对象名.属性名 来修改或者访问属性。下面贴个代码例子: GKHBook.h#import <Foundation/Foundation.h>@interface GKHBook : NSOb
2015-12-08 03:58:36 386
原创 05 @property和@synthesize
05 @property和@synthesizeTags: Objective-C5.1 @property和@synthesize规则@property声明属性a && 而无@synthesize实现 这种情况会使用_a作为属性a的成员变量,如果没有定义_a则会自动生成一个private的_a(如果本来定义了成员变量a,那么此时_a跟a没有任何关系)。@property声明属性a && @sy
2015-12-08 03:45:33 502
原创 04 @package访问控制符
04 @package访问控制符Tags: Objective-C访问控制符列表如下:从图中可以看出,package跟protected区别在于protected修饰的成员变量可以被子类访问,而package修饰的成员变量不能被子类访问,但是能被跟该类处于同一映像中的其它文件对其访问。同一映像:我们可以理解为将若干个文件编译后得到的一个执行文件,而这些文件就处于同一映像下。以如下代码为例,编译后会生
2015-12-08 03:37:37 559
原创 03 单例模式
03 单例模式Tags: Objective-CSingleton.h#import <Foundation/Foundation.h>@interface Singleton : NSObject+ (id) getInstance;//定义一个类方法用来生成实例对象@endSingleton.m#import "Singleton.h"static id instance = nil;//用来
2015-12-08 03:32:57 505
原创 02 形参个数可变的方法
02 形参个数可变的方法Tags: Objective-CVarArgs.h#import <Foundation/Foundation.h>@interface VarArgs : NSObject//定义一个形参个数可变的方法,表明可接受个数可变的NSString*参数//个数可变的形参只能放在形参列表的最后,且一个方法中最多只能有一个这样的形参- (void) test:(NSString
2015-12-08 03:30:45 401
原创 01 block的用法
01 block的用法Tags: Objective-C1.1 块的定义、块变量的定义块的定义的基本格式如下: ^(形参类型1 形参1, 形参类型2 形参2, ...) { //块执行体 }块变量的定义的基本格式如下: 块返回类型 (^块变量名) (形参类型1, 形参类型2, ...);下面有个代码示例,有关块的用法,可以发现块很像C++中的匿名函数,而块变量则像函数指针。Bloc
2015-12-08 03:24:48 788
转载 Ubuntu 14.04 脚本开机自启动
Ubuntu 14.04 脚本开机自启动0条评论有一个脚本想在ubuntu 14.04虚拟机开机时,自动运行。在网上查找方法,发现好多都不适合Ubuntu,现在公布一个方法,仅供参考Ubuntu 14.04 脚本开机自启动1.切换管理员账号2.确定脚本程序的绝对路径,例子中的脚本名称为:start_
2015-11-09 18:46:08 748
转载 Linux硬链接和软链接区别
软连接可以 跨文件系统 ,硬连接不可以 。实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt /root/bb 连接成功 。ln aa.txt /root/bb 失败 。(2)关于 I节点的问题 。硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加 ,只要结点的连接数不是 0,文件就一直
2015-10-29 20:25:45 350
转载 TortoiseSVN中分支和合并
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的方法不甚了解,这才是硬伤。最近由于适配机型的需要(本人从事手机客户端的开发),需要经常接触分支和合并两项工作,突然发现这玩意整不明白很难开展工作,遂这两天着重研究了一下,有点收获
2015-10-29 10:26:43 420
原创 各个版本Linux更改为163源
1 Ubuntu 14.04 LTS的163源:# cd /etc/apt# gedit sources.list内容如下:# deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse# deb http://archive.ubuntu.com/ubuntu/ trus
2015-10-28 15:51:34 2390
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人