目录:

一、Foundation常用类

二、Foundation简介

三、NSObject

四、NSString

回到顶部

一、Foundation常用类

1 NSObject、NSString、NSMutableString

2 NSNumber、NSValue、NSDate、NSArray

3 NSArray的遍历、NSArray的新语法(IOS6)、NSArray Copy、NSArray排序

4 NSSet、NSMutableSet、NSDictionary、NSMutableDictionary、Block代码段(函数指针)

5 Api应用程序接口文档(说明书)

1 Api Application Program Interface

回到顶部

二、Foundation简介

1 Foundation Framework OSX IOS基本框架

类库(Class Library)

基础类库:NSObject、NSString、NSMutableString

NSNumber、NSValue、NSDate。。。

集合类库:NSArray 、NSSet、NSMutableSet、NSDictionary、NSMutableDictionary

网络类:。。。

文件类:。。。

回到顶部

三、NSObject

1 所有类的父类,提供了系统运行时的一些基本功能

2 类的初始化

* 类加载的时候会自动调用+load方法

* 当第一次使用类时,自动调用+initalize方法

* 类在使用之前会执行此方法,且只会执行一次

3 对象的创建和释放

4 copy

* 并不是所有对象都有copy方法,如果一个对象支持copy功能,首先要遵守协议NSCopying协议,必须实现copyWithZone方法

* 如果想复制对象的同时还要复制对象的值,还要重写copyWithZone有参的初始化方法

练习:创建一个Person类,有姓名,年龄,性别,工资,创建一个对象并且复制一个对象,且复制对象的值。

练习:创建一个Book类,Person类拥有一本书,创建一个Person对象,第二个Person对象也拥有一本书,但是书不是共用一个对象。

5 类对象

* 比较类信息的时候,需要使用类对象,比如判断一个类是否是另一个类的子类。

* 类实例化变为对象,是类的对象

* 把类加载到内存中并创建类在内存中的对象(堆),是类对象

* 普通的类不占堆内存空间,类对象是占堆内存空间的

* 向类发送class消息,可以创建类对象

Class class= [Student class];

* 判断一个类是否是另一个类的子类

[Person isSubclassOfClass:[Student class]]

* 使用类对象可以避免多态使用时的不安全问题

6 方法选择器@selector

* 和C语言中的函数指针相类似

* SEL是方法的类型 sel是方法的引用

SEL sel = @selector(study);

* 判断某个类是否存在某个方法

BOOL b= [Student instancesRespondToSelector:@selector(study)]

* 可以向对象发送任何消息,而不需要在编译的时候声明这些消息,强制发送消息

performSelector:@selector(study)

与普通向对象发送消息的区别:编译器不会验证是否声明该方法,直接向对象发送消息,最好验一下对象是否存在该消息,以保证代码的安全性。

7 协议选择器

* 协议的变量指向一个协议

Protocol* p = @protocol(NSCopying)

* 可以判断一个类是否遵守了某个协议

BOOL b = [Student conformsToProtocol:@protocol(NSCopying)]

8 其他方法

* 判断一个引用指向的对象是否是某种类型或子类型

-(BOOL)isKindOfClass:(Class)c;

* 判断一个引用(实例)指向的对象是否是某种类型

-(BOOL)isMemberOfClass:(Class)c;

* 比较类信息时,需要使用类对象,判断一个类是否是另一个类的子类

+(BOOL)isSubclassOfClass:(Class)c;

练习:定义三个类,Animal、Dog、Cat。Dog与Cat继承Animal。

Animal有属性age,有一个eat能力(显示age属性的值,并输出调用了eat方法)

创建一个Dog对象,且属性值为5

复制该对象,向第二个Dog对象performSelector发送消息(eat)

注:安全性

练习:定义两个类Person、SuperMan、定义两个协议Person(job)、Fly(fly),使用两个类创建两个对象,分别使用performSelector方式向两个对象发送job消息<是否遵守Person协议>,fly消息<释放遵守Fly协议>,怎么保证代码的安全性。

回到顶部

四、NSString

1 在C 语言中,是没有专门的字符串类型,我们是通过字符数组来实现一个字符串。

2 在OC中专门的类型来描述字符串类型NSString

3 字符串比较特殊,遵循一个“不变模式”,一个字符串一旦创建,字符串对象就不可以改变,不可改变的字符串是可以重复使用的,所有相同值的字符串对象,一般只会创建一个对象

4 有些字符串存在常量中(代码区),有些字符串直接存在堆区,OC的字符串存在堆区,因为在OC中字符串是对象,对象存在堆区

5 字符串的使用

* 字符串的创建

空字符串NSString* str = [[NSString alloc] init];

* 字符串在创建的时候,如果已经存在,不会创建新的字符串

NSString* str = @"abc"; NSString* str2 = @"abc";这两个字符串变量是一个地址

* 如果使用stringWithFormat方法创建的字符串,就算内容相同,地址也不一样

* 通过文件内容创建字符串stringWithContentsOfFile,注意存在编码集的问题,默认ASC(不包含中文)要指定相应的中文编码集(GBK、GBK2313、BIG5繁体中文、UTF8)

参数1 文件路径,参数2 指定文件编码,参数3 出现异常处理

NSString* str5 = [NSString stringWithContentsOfFile:@"/Users/tarena/Desktop/test" encoding:NSUTF8StringEncoding error:nil];

6 字符串的比较

* str == str1;"=="只能判断两个字符串是否指向了同一个对象,也就是引用的地址是否相同,不能判断字符串的内容是否相同

* 判断两个字符串值是否相同,isEqualToString方法,比较当前字符串与对应字符串是否相同,严格区分大小写。

BOOL b5  = [str3 isEqualToString:str4];

作业:创建两个文件,分别保存用户名、密码,创建两个数据库的用户名,密码,匹配登录信息,如果匹配显示登录成功,否则登录失败。

7 比较字符串的大小

* 通常在字符串排序的时候,需要用到比较字符串的大小。

* comepare方法可以比较两个字符串,比较字符串中的字符的ASCII码的值,返回值有三种结果NSComparisonResult定义

:NSOrderedSame 代表相等 也就是数值0

:NSOrderedAscending后者比前者大  代表升序 也就是数值 -1

:NSOrderedDecending前者比后者大  代表降序 也就是数值 1

* 忽略大小写比较字符串

caselnsensitiveCompare这个方法忽略大小写,在验证码功能的时候会用到

作业:上面的作用完成,加上验证码(验证码保存在文件中)

01-Foundation简介、NSObject、copy、NSString的更多相关文章

  1. [OC Foundation框架 - 17] copy语法

    一个对象使用copy或mutableCopy方法可以创建对象的副本 1.copy 需要实现NSCopying协议 创建出来的是不可变副本,如NSString, NSArray, NSDictionar ...

  2. 01 HDFS 简介

    01.HDFS简介 大纲: hadoop2 介绍 HDFS概述 HDFS读写流程 hadoop2介绍 框架的核心设计是HDFS(存储),mapReduce(分布式计算),YARN(资源管理),为海量的 ...

  3. (Foundation)NSObject 、 NSString 、 NSMutableString

    1 重构Student和Book类 1.1 问题 本案例需要创建一个Book类,类中有一个整型price属性,用于记录书的价格.还需要创建一个Student类,类中有两个带参属性,它们是整型的年龄ag ...

  4. (转载)OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象

    在之前的一篇文章中我们说到了Foundation框架中的NSObject对象,那么今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString. 在OC中 ...

  5. Objective-C:Foundation框架-常用类-NSString全解

    Foundation框架中常用的类有字符串.集合.字典等,这里介绍字符串NSString.本文分别介绍了NSString的创建.从文件里读取NSString字符串.通过函数改变外部的NSString变 ...

  6. 01 Linux简介

    1.Linux简介 UNIX与Linux发展史 Unix在1969年,美国贝尔实验室的肯汤普森在DEC PDP-7机器上开发出了UNIX系统. Linux出现于1991年,是由芬兰赫尔辛基大学学生李纳 ...

  7. OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象

    今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString 在OC中NSString对象是不可变的,和Java中的String一样的,而NSMutabl ...

  8. iOS之NSArray类簇简介-(copy、mutableCopy导致程序crash)

    1.前言 开发时常常用数组对数据进行处理,对NSMutableArray进行操作时经常导致程序崩溃,特研究一下NSArray的类簇!涉及__NSPlaceholderArray.__NSArray0. ...

  9. Java入门 - 语言基础 - 01.Java简介

    原文地址:http://www.work100.net/training/java-intro.html 更多教程:光束云 - 免费课程 Java简介 序号 文内章节 视频 1 概述 2 主要特性 3 ...

  10. 01 . Redis简介及部署主从复制

    简介 Remote Dictionary Server, 翻译为远程字典服务, Redis是一个完全开源的基于Key-Value的NoSQL存储系统,他是一个使用ANSIC语言编写的,遵守BSD协议, ...

随机推荐

  1. Android滑动事件冲突

    首先,我们假设这样一个场景:一个ViewPager里面嵌套一个ViewPager,内部滑动方向和外部滑动方向一样时,该怎么解决这一冲突呢? 针对滑动冲突这里给出两种解决方案:外部拦截法,内部拦截法. ...

  2. 查看Oracle数据库某用户的连接信息

    执行以下语句可查出用户TJAMIS_LXF连接信息: select schemaname, osuser, process, machine, port, terminal, program from ...

  3. STL之vector(向量)

    C++编程语言中有一种叫做Vector的应用方法,它的作用在实际编程中是非常重要的,这里详细介绍一下C++ Vector的相关应用技巧及基本内容: Construct vector #include ...

  4. BZOJ 1231: [Usaco2008 Nov]mixup2 混乱的奶牛( dp )

    状压dp dp( x , S ) 表示最后一个是 x , 当前选的奶牛集合为 S , 则状态转移方程 : dp( x , S ) =  Σ dp( i , S - { i } )  ( i ∈ S , ...

  5. [LeetCode]题解(python):023-Merge k Sorted Lists

    题目来源: https://leetcode.com/problems/merge-k-sorted-lists/ 题意分析: 给定k个有序的链表,将这些链表整合成一个新的有序链表. 题目思路: 前面 ...

  6. java-输出格式

    https://docs.oracle.com/javase/tutorial/java/data/numberformat.html Formatting Numeric Print Output ...

  7. django 基础入门(一)

    1. django 基本命令 新建project django-admin.py startproject project-name 新建app python manage.py startapp a ...

  8. FPGA知识大梳理(一)对FPGA行业的一点感言

    今天想开始把这FPGA行业的知识点做一个大整理,从个人感想,到语法,到器件基础,难点攻克,到项目应用.把自己这几年接触到的知识做一个全面的回顾,看看自己这几年走过的路. 人生无常,几年的跌跌撞撞勉强算 ...

  9. Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据

    原文 Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据 第14部分:在运行时绑定到真实的数据 原文地址: http://channel9.msdn.com/Series/ ...

  10. 基于visual Studio2013解决C语言竞赛题之0403字符统计

      题目 解决代码及点评 这道题的目标是锻炼while循环,while循环的语法是 while(循环条件) { 循环体; } 每次进入循环体之前,先判断循环条件是否满足,如果不满足,执行序列就 ...