Objective-C学习之路
文章平均质量分 52
Objective-C的学习,不包括C语言部分,从OC的语法到Foundation框架的一步一步讲解。
Terry_小三哥
这个作者很懒,什么都没留下…
展开
-
30 Foundation框架之NSKeyedArchiver和NSKeyedUnarchiver
30 Foundation框架之NSKeyedArchiver和NSKeyedUnarchiverTags: Objective-CNSKeyedArchiver表示归档,表示把对象转换为可保存可传输的数据流,通常可以是文件或者URL。 NSKeyedUnarchiver表示恢复归档,表示从数据流中恢复对象。NSKeyedArchiver和NSKeyedUnarchiver有两种使用方式,第一种是原创 2015-12-09 01:14:15 · 1081 阅读 · 0 评论 -
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 · 709 阅读 · 0 评论 -
28 Foundation框架之NSFileHandle
28 Foundation框架之NSFileHandleTags: Objective-C前面我们讲过NSFileManager对象,主要用来创建、删除、复制、移动文件或者目录。那么如果需要对文件进行写入和读取操作时候,我们应该使用NSFileHandle,通常来说,使用NSFileHandle的基本步骤如下:创建一个NSFileHandle用来打开指定的文件(这个文件如果不存在的话会返回nil,原创 2015-12-09 01:13:30 · 672 阅读 · 0 评论 -
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 · 3014 阅读 · 0 评论 -
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 · 1074 阅读 · 0 评论 -
25 Foundation框架之NSFileManager
25 Foundation框架之NSFileManagerTags: Objective-CNSFileManager表示文件管理器对象,通过该对象可以完成一些文件管理。比如访问指定路径的文件属性及内容,创建、删除、移动、复制文件或目录,查看指定目录下的包含的内容等。代码测试如下: NSFileManagerTest.m#import <Foundation/Foundation.h>int ma原创 2015-12-09 01:12:32 · 870 阅读 · 0 评论 -
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 · 806 阅读 · 0 评论 -
23 Foundation框架之NSPredicate
23 Foundation框架之NSPredicateTags: Objective-CNSPredicate对象:也称作谓词对象,用来定义一个逻辑条件,通过该条件可以执行搜索或者过滤操作。谓词表达式中支持的语法:关系运算符: 1 =或==:等于 2 >=或=>:大于等于 3 <=或=<:小于等于 4 >:大于 5 <:小于 6 !=或<>:不等于 7 BETWEEN:原创 2015-12-09 01:11:50 · 775 阅读 · 0 评论 -
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 · 831 阅读 · 0 评论 -
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 · 3453 阅读 · 0 评论 -
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 · 1364 阅读 · 0 评论 -
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 · 1495 阅读 · 0 评论 -
18 对象的copy与mutableCopy方法
18 对象的copy与mutableCopy方法Tags: Objective-Ccopy方法:copy方法用来复制对象,产生一个不可变副本,不论对象本身是可变的还是不可变的,用copy方法产生的副本都是不可变的副本。比如调用NSMutableString对象的copy方法产生的对象是NSString对象。mutableCopy方法:mutableCopy方法用来复制对象,产生一个可变副本,不论原创 2015-12-08 04:22:37 · 689 阅读 · 0 评论 -
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 · 556 阅读 · 0 评论 -
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 · 468 阅读 · 0 评论 -
15 手动内存管理
15 手动内存管理Tags: Objective-CXCode5以前,对象的内存管理都需要手动管理,后来有了ARC之后才不需要手动管理,但是理解手动内存管理有助于我们编写更高效率的代码。对象的引用计数规则: 1. 当调用以alloc、new、copyXXX、mutableCopyXXX名字开头的方法创建对象时,对象的引用计数加1。 2. [objectPointer retain] 对象的引用原创 2015-12-08 04:18:28 · 505 阅读 · 0 评论 -
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 · 573 阅读 · 0 评论 -
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 · 882 阅读 · 0 评论 -
12 协议
12 协议Tags: Objective-C协议:用@protocol来指定,相当于Java中的接口,一般用来定义一些通用的方法规范,这些方法只有声明而不需要实现,协议提供给类使用后需要在类的实现部分实现类遵守的所有协议中的方法。在OC中,类不能多重继承,而协议可以,一个协议可以继承多个不同的协议形成一个新协议,类的interface部分指定了类的父类是谁,遵守了哪些协议,定义语法如下:@inter原创 2015-12-08 04:07:31 · 735 阅读 · 0 评论 -
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 · 549 阅读 · 0 评论 -
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 · 568 阅读 · 0 评论 -
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 · 377 阅读 · 0 评论 -
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 · 482 阅读 · 0 评论 -
07 类的初始化和重写description方法
07 类的初始化和重写description方法Tags: Objective-C在定义一个类的时候,我们通常要定义构造方法,而一般来说构造方法分为两种,以init开头的实例构造方法以及类名开头的类构造方法,后者也称静态构造方法。下面是代码实例:Person.h#import <Foundation/Foundation.h>@interface Person : NSObject@property原创 2015-12-08 03:59:54 · 452 阅读 · 0 评论 -
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 · 390 阅读 · 0 评论 -
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 · 509 阅读 · 0 评论 -
04 @package访问控制符
04 @package访问控制符Tags: Objective-C访问控制符列表如下:从图中可以看出,package跟protected区别在于protected修饰的成员变量可以被子类访问,而package修饰的成员变量不能被子类访问,但是能被跟该类处于同一映像中的其它文件对其访问。同一映像:我们可以理解为将若干个文件编译后得到的一个执行文件,而这些文件就处于同一映像下。以如下代码为例,编译后会生原创 2015-12-08 03:37:37 · 562 阅读 · 0 评论 -
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 · 511 阅读 · 0 评论 -
02 形参个数可变的方法
02 形参个数可变的方法Tags: Objective-CVarArgs.h#import <Foundation/Foundation.h>@interface VarArgs : NSObject//定义一个形参个数可变的方法,表明可接受个数可变的NSString*参数//个数可变的形参只能放在形参列表的最后,且一个方法中最多只能有一个这样的形参- (void) test:(NSString原创 2015-12-08 03:30:45 · 409 阅读 · 0 评论 -
01 block的用法
01 block的用法Tags: Objective-C1.1 块的定义、块变量的定义块的定义的基本格式如下: ^(形参类型1 形参1, 形参类型2 形参2, ...) { //块执行体 }块变量的定义的基本格式如下: 块返回类型 (^块变量名) (形参类型1, 形参类型2, ...);下面有个代码示例,有关块的用法,可以发现块很像C++中的匿名函数,而块变量则像函数指针。Bloc原创 2015-12-08 03:24:48 · 796 阅读 · 0 评论