Objective-C

爱⌒轻易说出口 提交于 2019-11-30 08:18:01

Objective-C - Foundation框架初探

Foundation之于Objective-C就好比Java中SDK类库之于Java。

这个框架提供了基本的Objective-C的类,最重要的根类,NSObject,它定义了基本的对象行为。

框架包括了各种基本数据类型、集合,操作系统服务的对象的类。Foundation同样包含了几种设计模式

和机制,以遍设计出更健壮和高效的Objective-C程序。

一:基本的Protocols (类似于Java中的接口。明显的区别是,Protocols中允许可选实现方法。

   我下面写的“采纳”类似于Java中的实现。

   (1)NSObject ,值得注意的是它的名字跟NSObject类同名。

     采纳了这个协议的类,就可以被查询它们的类和父类,可以跟其他对象比较。

   (2)NSCoding,采纳了这个协议的类可以被编码和解码。

   (3)NSCoping,这个协议只定义了一个方法,copyWithZone:,如果一个类支持对象拷贝那么就需要采纳这个协议。


二:基本的类

   (1)NSObject ,NSObject类是Objective-C类继承体系中的根类。

NSObject类采纳了NSObject协议。

  (2)NSNumber ,它是用于处理基本数据类型的工具类,是NSValue的子类。

  它为标量提供了面向对象的封装和指针。值得注意的事,从NSNumber中取出的值

应该与存储的值保持一致。NSNumber会尝试将存储的值动态转换为所需要的值。

  (3) NSString ,对应与Java中的String类。保存的事Unicode字符。

 跟Java中的一样,NSString实例是不可变得。如果需要修改字符串,

你可以先创建一个NSMutableString(类似Java中的StirngBuilder)然后进行修改。

   关于NSString的其他操作,我会放到其他的文章中。

  (4)NSArray和NSSet,NSMutableArray,

    基本对应于Java中的(Array,Set,List)

 (5)NSDictionary和NSMutableDictionary。

 NSMutableDictionary类似于Java中的Map。NSDictionary则是不可变得Map。

  测试实例如下:

01 void testNSDictionary(){
02     NSDictionary *dicts = @{@"name" : @"banxi1988",@"age":@47};
03     NSLog(@"myInfo:%@",dicts);
04     NSMutableDictionary* mutableDicts = [NSMutableDictionary dictionaryWithDictionary:dicts];
05     [mutableDicts setObject:@24 forKey:@"age"];
06      NSLog(@"myInfo:%@",mutableDicts);
07     [mutableDicts setObject:@"Haizhen.Li" forKeyedSubscript:@"age"];
08          NSLog(@"myInfo:%@",mutableDicts);
09     /*
10      2013-01-12 20:33:41.923 Demo[3529:303] myInfo:{
11      age = 47;
12      name = banxi1988;
13      }
14      2013-01-12 20:33:41.927 Demo[3529:303] myInfo:{
15      age = 24;
16      name = banxi1988;
17      }
18      2013-01-12 20:33:41.928 Demo[3529:303] myInfo:{
19      age = "Haizhen.Li";
20      name = banxi1988;
21      }
22      */



1.参考:

(1)https://developer.apple.com/library/ios/navigation/#section=Frameworks&topic=Foundation

(2)http://mobile.tutsplus.com/tutorials/iphone/exploring-the-foundation-framework/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!