空值
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// NULL 表示基础类型的指针为空
int *w = NULL;
// nil 表示对象的指针为空
id obj = nil;
// Nil 表示Class变量为空
Class cla = Nil;
// NSNull 用在数组或字典中,占位,作为空元素
NSArray *array = [[NSArray alloc] initWithObjects:@"one",@13,@"two",[NSNull null],@"诸葛连弩", nil];
NSLog(@"%@",array);
}
return 0;
}
plist文件处理
#define PATH @"/Users/qianfeng/Desktop/HeHe"
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 创建plist文件(代码)
// 获取文件存放的路径
NSString *str = [PATH stringByAppendingPathComponent:@"test.plist"];
// 生成需要存储的数据
NSArray *arrayO = @[@"孙悟空",@"黑熊精",@10];
NSArray *arrayT = @[@"薛宝钗",@"诸葛亮",[NSDate date]];
NSArray *arrayTh = @[@"edu",@"hehe"];
// 一般来说plist文件的根节点是一个字典
NSDictionary *dict = @{
@"ONE":arrayO,
@"TWO":arrayT,
@"THREE":arrayTh
};
// 写入数据
[dict writeToFile:str atomically:YES];
// 读取plist文件的数据
NSDictionary *dictQ = [[NSDictionary alloc] initWithContentsOfFile:str];
//想取数组一中的数据
NSArray *arr = [dictQ objectForKey:@"ONE"];
NSLog(@"%@",arr);
}
return 0;
}
NSValie
#import <Foundation/Foundation.h>
typedef struct {
int a;
char b;
int c;
char d[5];
}STRUCT;
int main(int argc, const char * argv[]) {
@autoreleasepool {
int a[10] = {1,2,3,4,5,6,7,8,9,10};
// 将数组(C语言)转成对象,其实就是将数组的数据存放到对象里
//value:任何数据的类型的地址
//withObjCType: OC支持的encode类型
NSValue *value = [NSValue value:a withObjCType:@encode(int[10])];
NSLog(@"%s",@encode(int));//打印结果:i
NSLog(@"%s",@encode(char));//打印结果:c
NSLog(@"%s",@encode(int[10]));//打印结果:[10i]
NSLog(@"%s",@encode(STRUCT));//打印结果:{?=ici[5c]}
int m[10];
[value getValue:m];
for (int i = 0; i < 10; i ++) {
NSLog(@"%d",m[i]);//打印结果:1-10个数据
}
// value.objCType 获取value对象里面存储的数据类型
NSLog(@"%s",value.objCType);////打印结果:[10i]
//这里是两个字符串的比较 比较两字符串相不相等 如果等于0则相等
if (strcmp(value.objCType, @encode(int[10]))== 0) {
NSLog(@"类型相同");
}
// 将对象放入NSValue
NSValue *valueT = [NSValue valueWithNonretainedObject:@"大话西游"];
// 取对象
NSString *str = [valueT nonretainedObjectValue];
NSLog(@"%@",str);
}
return 0;
}
NSNumber
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 将整形转成NSNumber对象
NSNumber *numberInt = [[NSNumber alloc] initWithInt:100];
// NSNumber *numberInt = [[NSNumber alloc] initWithInt:100];
// NSNumber *numberInt = @6;
// NSNumber *numberFloat = @3.14;
// NSNumber *numberBool = @YES;
NSNumber *numberFloat = [[NSNumber alloc] initWithFloat:3.14];
// NSNumber *numberFloat = [[NSNumber alloc] initWithFloat:];
NSNumber *numberBool = [[NSNumber alloc] initWithBool:YES];
// NSNumber *numberBool = [[NSNumber alloc] initWithBool:YES];
// xcode 5 之后NSNumber可以这么写
NSNumber *numberQ = @6;
NSNumber *numberW = @3.14;
NSNumber *numberE = @YES;
// NSNumber大小比较
// 相等
BOOL ret = [@5 isEqualToNumber:@5.0];
if (ret) {
NSLog(@"相等");
}
// 大小比较
NSComparisonResult result = [@5 compare:@9];
if (result == NSOrderedAscending) {// 升序
NSLog(@"右边的大");
}else if (result == NSOrderedDescending){// 降序
NSLog(@"右边小");
}else{
NSLog(@"相等");
}
}
return 0;
}
NSDateFormatter
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建时间戳
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
// NSLog(@"%@",dateFormatter);
//使用时间戳的目的,是为了自定义时间的打印格式
dateFormatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss.S";
//后设置会顶替原设置
// dateFormatter.dateFormat = @"yyyy-MM-dd ahh时mm分ss秒";
// NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]);
NSString *str = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"%@",str);
//设置时区,如果不设,缺省是系统时区
// dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"CST"];
//根据风格,返回时间打印的字符串
// NSLog(@"%@", [dateFormatter stringFromDate:date]);
}
return 0;
}
NSDate
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 1.获取当前时间(获取的是格林尼治时间)
NSDate *curentDate = [NSDate date];
NSLog(@"%@",curentDate);
// 2. 返回以当前时间为准,之后的几秒
NSDate *dateT = [NSDate dateWithTimeIntervalSinceNow:3600];
NSLog(@"%@",dateT);
// 3. 返回1970.1.1之后的对少秒时间
NSDate *dateE = [NSDate dateWithTimeIntervalSince1970:3600];
NSLog(@"%@",dateE);
// 返回很多年前的一天
NSDate *dateP = [NSDate distantPast];
NSLog(@"%@",dateP);
// 返回很多年后的一天
NSDate *dateF = [NSDate distantFuture];
NSLog(@"%@",dateF);
// 获取当前时间+多少秒 生成新的时间
// NSDate *dateY = [curentDate addTimeInterval:1000];
// NSLog(@"%@",dateY);
// 返回一个时间 dateT和当前时间的时间差
NSTimeInterval dateH = [dateT timeIntervalSinceNow];
NSLog(@"%lf",dateH);
// 获取系统时区
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSLog(@"%@",zone);
// 获取时区
NSDictionary *dict = [NSTimeZone abbreviationDictionary];
NSLog(@"%@",dict);
}
return 0;
}
// 作业
1. 让A B拥有5个相同的方法
2. 让A用有一份协议,其中有2个必须实现的方法,3个不要要求的方法
3. 一个人有一条狗,狗饿了,人喂食。
// 拓展
练习:
1.创建广播站类和收音机类
广播站
方法:
播音(参数是一个字符串)
收音机
方法:
收音并播放(参数也是字符串, 被动)
作业:
1.创建两个界面的类
界面1
属性 BOOL isOn;
方法
显示当前状态(show)
界面2
属性 BOOL isOn;
方法:
开启
关闭
//当界面2开启的时候 界面1的状态是关闭。
当界面2 关闭的时候 界面1的状态是开启