zoukankan      html  css  js  c++  java
  • 《objective-c基础教程》学习笔记(九)—— Foundation框架介绍

      在之前的博文中,我们创建的项目文件的时候,默认都有引用#import <Foundation/foundation.h> 这个头文件。但是,之前我们对Foundation都没有展开介绍。这篇博文,我们就揭开它神秘的面纱。

      之前,我们有提到过OC使用的是Cocoa框架。那么Cocoa和Foundation之间,有啥关联呢?实际上,Cocoa是由许多个不同的框架组成的。最常用的是Foundation和Application Kit。

      Foundation框架中有很多有用的、面向数据的简单类和数据类型。是由许多类,方法,函数,文档按照一定的逻辑组织起来的几何。数据类型主要如:NSString,NSArray,NSNumber等,将近有100多个类,都可以在Xcode的安装文档中找到具体的使用方法。

      那么,接下来,我们就对几个主要的类型的使用进行简单的实例说明。

    一、字符串NSString类型)

      格式字符%@可以显示字符串,数组,字典和集合的全部内容。

      1. 字符串比较

    1 NSString *thing1 =@“hello 5”;
    2 NSString *thing2 = [NSString stringWithFormat: @"hello %d",5];
    3 if([thing1 isEqualToString: thing2])
    4 {
    5    NSLog(@"They are the same!");  
    6 }

      这里,我们可以看到。用到了两个字符串的方法,stringWithFormat:是格式化字符串输出。isEqualToString:是判断两个字符串是否相同。

    那么,isEqualToString和直接用“==”来判断是否相同,有啥区别呢?

      用“==”运算符比较,只能判断thing1和thing2的指针数值是否相同。而不能判断是否指向同一个对象。由于thing1和thing2是不同的字符串,所有这边用这个运算符比较的话,会被认为是不同的。

      2. 字符串的可变性

      在OC中,NSString类型是不可变的,即:一旦被创建,便不能变化。如果要对字符串进行改变的话,则在Cocoa中,提供了一个NSString的子类,叫NSMutableString

    1 NSMutableString *string = [NSMutableString stringWithCapacity:50];
    2 [string appendString: @"Hello "];
    3 [string appendFormat: @"NSString %d", 2];

    定义用的关键字:stringWithCapacity。运行结果等于string被两次赋值,最后结果是:“Hello NSString 2”。

    二、集合类型NSArrayNSDictionary

      集合类型,就相当于C语言中的数组。NSArray是一个Cocoa类,用来存储对象的有序列表。只能存OC对象,而不能存C语言的基本数据类型。同时,也不能直接存nil(对象的NULL值)。

      1. 创建一个NSArray的格式:

    1 NSArray *array1 = [NSArray arrayWithObjects: @"one", @"two", @"three", nil];

      这里,我们定义的集合有三个元素,最后面的nil并不是一个元素,而是结束的标记符号。这也是为什么集合类型不能存nil的原因。

    只要是个集合,就有count获取集合中元素的个数,index来获取指定位置的元素。注意,获取元素的index值不能大于集合总数count,否则会报错!

    for(NSInteger i=0; i< [array1 count]; i++)
    {
        NSLog(@"index %d is %@", i, [array1 objectAtIndex: i]);
    }

      2. 可变集合

      和NSString一样,NSArray创建也是不可变对象,一旦创建就不能被修改。因此,集合类型也有子类型是可以变的:NSMutableArray

    和NSString一样,定义可变集合也有配套的关键字:arrayWithCapacity

    1 NSMutableArray *array = [NSMutableArray arrayWIthCapacity: 5];
    2 for(NSInteger i=0; i<5; i++)
    3 {
    4     Tire *tire = [[Tire alloc] init];
    5     [array addObject: tire];
    6 }

      有add的添加方法,当然也有remove的删除方法。如果,对集合中第二个元素不喜欢,则可以:

    1 [array removeObject: 1]; // 元素索引从0开始。

      3.NSDictionary类型

      看名字,顾名思义是字典类型,是关键字及其定义的集合。

    定义字典类型对象的格式:

    1 NSDictionary *tires = [NSDictionary dictionaryWithObjectsAndKeys: t1, @"tire1", t2, @"tire2", t3, @"tire3", nil]; // 也是用nil表示结束

    字典类型还有一种创建方法:

    1 NSMutableDictionary *tires = [NSMutableDictionary dictionary];
    2 [tires setObject:t1 forKey:@"tire1"];
    3 [tires setObject:t2 forKey:@"tire2"];
    4 [tires setObject:t3 forKey:@"tire3"];

    如果要删除字典中的元素,可以用:

    1 [tires removeObjectForKey: @"tire1"];
  • 相关阅读:
    Linux基础命令---chfn
    第二十一课:js属性操作的兼容性问题
    jquery源码解析:jQuery工具方法Callbacks详解
    第二十课:js中如何操作元素的属性系统
    第十七课:js数据缓存系统的原理
    jquery源码解析:proxy,access,swap,isArraylike详解
    第十九课:盒子模型
    jquery源码解析:each,makeArray,merge,grep,map详解
    第十八课:js样式操作需要注意的问题
    下拉框插件的详解
  • 原文地址:https://www.cnblogs.com/jianglan/p/4149908.html
Copyright © 2011-2022 走看看