• 《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"];
  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/jianglan/p/4149908.html
Copyright © 2020-2023  润新知