OC学习总结3

1.NSNull

空对象,使用NSNull可以将表示“什么都没有”的值放到数组或者字典里
NSNull null
NSNull是一个类,[NSNull null]创建一个表示什么都没有的空对象
nil 是指向0x0地址的指针,可以为对象赋值,表示对象不存在
NULL 1.c类型的空指针 2.null在打印的时候表示空值
Nil [Class class]; 空的类
[NSNull null]得到的空对象的地址是固定的,所以可以在逻辑中判断是否是空的。不管在哪里创建的空对象,地址都是一样的。

2.NSData

字节流
NSString *[email protected]"hello world!";
将一个字符串转换成NSData的对象
NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%s",data.bytes);
将NSData对象转化成字符串
NSString *newStr=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",newStr);

3.NSSet

集合 哈希表 散列算法
NSSet 无序
NSArray 有序 都是存储不同的对象
创建集合和创建数组相似

NSSet *set=[[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four",nil];
NSLog(@"%@",set); 输出结果无序
NSSet *set2=[[NSSet alloc] initWithObjects:@"one",@"three",@"two",@"four",nil];
BOOL ret =[set isEqualToSet:set2];
NSLog(@"%d",ret);返回值YES 1
BOOL ret =[set isSubsetOfSet:set2];判断第一个集合是否是第二个集合的子集合 返回值YES 1

4.NSMutableSet

NSMutableSet是NSSet的子类,除了具有NSSet的方法外,还可以动态的添加删除元素

1 创建可变集合
NSMutableSet *set=[NSMutableSet set];
[set addObject:@"One"];
[set addObject:@"two"];
[set addObject:@"three"];
[set addObject:@"Two"];
NSLog(%"%@",set);输出One two three,两个two只保留一个
2 删除集合中的元素
[set removeObject:@"three"];还剩 One two
3 添加
NSSet *set2=[NSSet setWithObject:@"five",@"six",@"one",nil];
[set unionSet:set2];把set2中的内容合并到set中
[set minusSet:set2];把set2中的内容从set1中删除,只剩two了
##NSIndexSet
指数集合 索引集合 是一个变种,和NSSet没有继承关系

5.NSDate

1 创建
NSDate *now =[NSDate date];
NSLog(@"now>>>>%@",now);
输出 2015-07-20 6:44:20 +0000 比现在慢8小时,北京东8区,时区

2 通过时间差获取另外一个时间
NSTimeInterval interval=60*60*24;
NSDate *yesterday=[now dateByAddingTimeInterval:-interval];
%@ yesterday 输出昨天的时间
NSDate *tomorrow=[now dateByAddingTimeInterval:interval];
%@ tomorrow 输出明天的时间
NSDate *someDate = [NSDate dateWithTimeInterval:-60*60*24*7 sinceDate:tomorrow];
NSLog(@"someDate >>>> %@", someDate);
NSDate *date1 = [NSDate dateWithTimeIntervalSinceReferenceDate:60*60*24*365*15];
NSLog(@"date1 >>>> %@", date1);
3 判断 比较日期
now isEqualToDate:tomorrow
NSDate *earlierDate = [tomorrow earlierDate:now]; // 早一点的日期
NSDate *laterDate = [tomorrow laterDate:now]; // 晚一点的日期
NSLog(@"earlierDate >>>> %@", earlierDate);
NSLog(@"laterDate >>>> %@", laterDate);

// 求时间差
NSTimeInterval interval1 = [now timeIntervalSinceDate:tomorrow];
NSLog(@"interval1 >>>>> %lf", interval1);

/************* NSTimeZone *************/

NSTimeZone *localZone = [NSTimeZone defaultTimeZone];
NSLog(@"localZone >>>>> %@", localZone);

NSTimeZone *Taipei = [[NSTimeZone alloc] initWithName:@"Asia/Taipei"];
NSLog(@"Taipei >>> %@", Taipei);

##NSTimeZone
1 时区
NSArray *allZone=[NSTimeZone knownTimeZoneNames];
for(NSTimeZone *zone in allZone){
NSLog(@"zone>>%@",zone);
}
2 本地默认时区
NSTimeZone *localZone=[NSTimeZone defaultTimeZone];
NSLog(@"local>>>%@",localZone); 输出Asia shanghai 亚洲上海
3 /************* NSDateFormatter *************/
// 通过对 NSDateFormatter的设置来输出任意格式的时间文本
NSDateFormatter *dateFromatter = [NSDateFormatter new];

[dateFromatter setDateStyle:NSDateFormatterShortStyle];
[dateFromatter setTimeStyle:NSDateFormatterShortStyle];

[dateFromatter setTimeZone:localZone];
NSLog(@"now >>>>>> %@", [dateFromatter stringFromDate:[NSDate date]]);

[dateFromatter setDateFormat:@"yy-M-dd HH:mm:ss 今天是第w 周 上午/下午:a "];
NSLog(@"now >>>>>> %@", [dateFromatter stringFromDate:[NSDate date]]);

// 把时间格式的字符串变成时间对象
NSString *timeStr = @"85------10/28 17:15:00";
[dateFromatter setDateFormat:@"yy------MM/dd HH:mm:ss"];
NSDate *birth = [dateFromatter dateFromString:timeStr];
NSLog(@"birth >>>> %@", birth);

6.NSTimer

计时器
[NSTimer scheduledTimerWithTimeInterval:1 target:student selector:@selector(sleep) userInfo:nil repeats:YES];

[[NSRunLoop mainRunLoop] run];

7.id

OC 语法推出一个id关键字,表示在编译过程中不指定类型。使用id类型编写代码对运行不会有任何影响。

时间: 2024-12-10 22:59:26

OC学习总结3的相关文章

OC学习篇之---总结和学习目录

今天终于把OC的基础知识学习完了,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.下面就是这次学习OC的目录教程,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请OC老鸟来喷~~ 1.OC学习篇之---概述 2.OC学习篇之---第一个程序HelloWorld 3.OC学习篇之---类的定义 4.OC学习篇之---类的初始化方法和点语法的使用 5.OC学习篇之---类的三大特性(封装,继承,多态) 6.OC学习篇之[email protected]关键

IOS开发-OC学习-常用功能代码片段整理

IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是在做与URL有关的功能时,需要在Info.plist中添加一段代码进而实现让网址完成从Http到Https的转换,以及其他的一些功能. 在从一个新手到逐渐学会各种功能.代码.控件.方法如何使用的过程中,也在逐渐积累一些知识,但是一次总不会把这些东西都深刻记住并完全理解.所以在这儿记录下这些东西,用来

OC学习篇之---单例模式

在之前的一片文章中介绍了对象的拷贝相关知识:http://blog.csdn.net/jiangwei0910410003/article/details/41926531,今天我们来看一下OC中的单例模式,单例模式在设计模式中用的可能是最多的一种了,而且也是最简单的一种 实现单例模式有三个条件 1.类的构造方法是私有的 2.类提供一个类方法用于产生对象 3.类中有一个私有的自己对象 针对于这三个条件,OC中都是可以做到的 1.类的构造方法是私有的 我们只需要重写allocWithZone方法,

黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSNumber 前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了. 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的NSNumber就有用了,它能够把基本数据类型包装成OC对象.

黑马程序员-OC学习笔记之block

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9426    Accepted Submission(s): 4151 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做par

(转载)OC学习篇之[email protected]关键字的作用以及#include和#import的区别

前一篇文章说到了OC中类的三大特性,今天我们来看一下在学习OC的过程中遇到的一些问题,该如何去解决,首先来看一下我们之前遗留的一个问题: 一.#import和#include的区别 当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误 但是使用两次#import的话,不会报错,所以他可以解决重复导入的问题,他会做一次判断,如果已经导入一次就不导入了 二.关键字@class的作用 在来看一下OC中的关键字@class的作用,在

黑马程序员-OC学习笔记之ARC

---------------------- IOS开发.Android培训.期待与您交流! ----------------------一.什么是ARC        ARC是自动引用计数,苹果官方在Xcode4.2及以后版本中加入的一个内存管理机制,完全取代了程序员人工的内存管理,使得程序员只须关心程序本身.使用ARC,编译器会自动在代码中加入内存管理代码,是一个编译器特性,而不是运行时特性,当然,它也和JAVA的垃圾回收不同,它的本质和手动的内存管理是一样的,只是这些代码编译器会自动添加.

OC学习总结之面向对象和类

OC学习总结之面向对象和类 Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程  面向对象和面向过程是编程的两种思考方式.面向对象,简称OOP,它是以事物为中心,参与事件的事物是核心,完成事件只是事物的一个小任务.面向过程,简称OPP,它是以事件为中心,事件是核心,列出了完成事件的每一个步骤,一步一步完成.也就是面向对象侧重于从问题在寻找客体.客体的作用.客体间的关系即“谁”.“做什么”.“怎么做”,面向过程侧重于问题的分解即“事

黑马程序员-OC学习笔记之NSString与NSMutableString

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSString与NSMutableString 相信大家对NSString类都不陌生,它是OC中提供的字符串类,它的对象中的字符串都是不可变的,而它的子类NSMutableString类的对象中的字符串就是可变的.什么是可变与不可变呢?二者的区别就是在已经创建的一个字符串对象中,在程序中能不能更改字符串,比如拼接新的字符串,可变的可以在原字符串中更改,

OC学习16——对象归档

转载自  OC学习篇之---归档和解挡 OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOutputStream来进行操作的.当然在操作的这些对象都是需要实现一个接口:Serializable,同样的OC中操作的对象也是需要实现一个协议的,后面会说到. 一.已有类型的归档和解档 首先来看一个简单的例子: 1 // 2 // main.m 3 // 33_ObjectToFile 4 // 5 // Created by jiangwei on