黑马程序员———ios基础

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">ios培训</a>、期待与您交流! ----------

1 变量声明
变量的声明与C语言一样,在变量名前加类型名

以下这些数据类型是从C语言中直接拿来使用的:

int n;
unsigned int n;
char n;
unsigned char n;
long n;
float n;
double n;

另外,Objective-C还扩展了一些数据类型,布尔类型用YES和NO来表示逻辑1和逻辑0

BOOL isOK = YES;
BOOL isBAD = NO;

Objective-C中的对象声明就是该对象的指针声明

NSString *string;
NSArray * array;
NSDictionary* dictinary;

2 类的声明和实现的区别

类的声明一般写在.h文件中,而实现则写在.m文件中。.h文件又称为接口文件,它只会规定一个类有哪些成员变量和成员函数,而不去具体实现它。这个.h文件一般由架构师来撰写。.m文件中具体实现类的成员函数,它往往由软件工程师负责。

3 新建对象和释放内存

生成一个对象,有两种方法:alloc+init系列和autorelease释放。
因为没有垃圾回收机制,Objective-C采用计数器的方式来管理内存,使用的时候要特别小心。

用retain方法对计数器加1,用release方法对计数器减1

3.1 alloc函数+init系列函数

初始化时,用alloc函数+init系列函数方法时,计数器的状态会被设为1,使用完毕后,务必记得要用release方法来释放内存。

NSArray *array = [[NSArray alloc] initWithObjects:@"a", @"b", @"c", nil];
// 对array的一些处理
[array release]; // 释放array的内存



用alloc函数+init系列函数的方法生成的对象也可以委托autorelease来释放。

NSArray *array = [[[NSArray alloc] initWithObjects:@"a", @"b", @"c", nil] autorelease];
3.2 autorelease释放

使用autorelease时,初始化对象的计数器值也被设为1。当达到autorelease的scope的时候,该对象就会收到一个release消息,这就实现了内存自动释放。

NSArray *array = [NSArray arrayWithObjects:@"A", @"B", @"C", nil];
3.3 数值
int i = 2
int i = 100000000;
float radius = 1.0f;
double diameter = 2 * M_PI * radius;
3.4 四则运算
num = 1 + 1;
num = 1 - 1;
num = 1 * 2;
num = 1 / 2;

求商的方法是这样的,如果被除数与除数都是整数,则计算结果是向下取整的整数(小数点后面的全部去掉)。

num = 1 / 2;  // 0

如果被除数与除数中有一个是小数,则计算结果不舍弃小数部分。

num = 1.0 / 2;    // 0.5
num = 1 / 2.0;    // 0.5
num = 1.0 / 2.0;  // 0.5

下面是求余:

// 求余
mod = 4 % 2;
3.5 自增和自减
// 自增
num++;
++num;
// 自减
num--;
--num;

同C语言中的自增和自减运算一样,如果单独使用则运算符放在左边和右边都一样,当在代数式和条件式中使用时,则要特别小心。请不清楚的读者网上搜索一下C语言的自增和自减的注意点。

4 字符串

4.1 字符串的表示

字符串使用NSString,用@”"来表示字符串。
NSString是只读的字符串。

NSString *string = @"Hello World!";

可修改的字符串要这样声明:

NSMutableString * string = [NSMutableString stringWithString:@"Hello World!"];
4.2 字符串操作
// 与字符串连接
NSMutableString * string = [NSMutableString stringWithString:@"aaa"];
NSString *joined = [string appendString:@"bbb"];
//字符串追加

NSMutableString *str=[[NSMutableStringalloc] initWithString:@"dd"];

str=[str stringByAppendingString:@"eee" ];
//字符串替换

NSString *str = @"Hello world!";



str =[str stringByReplacingOccurrencesOfString:"world" withString:"China"];







NSlog(@"Your String is = %@",str);

你将会看到输入Hello China
// 与数组连接

NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil]; NSString *joined = [array componentsJoinedByString:@","];

//分割数组

NSString * string = [NSMutableString stringWithString:@"aaa,bbb,ccc"];

NSArray *record = [string componentsSeparatedByString:@","];

 

// 字符串长度 int length = [@"abcdef" length];

 

//提取字串

NSString *string = [@"abcd" substringWithRange:NSMakeRange(0, 2)]; // ab

 

//搜索

NSString *string = @"abcd"; NSRange range = [string rangeOfString:@"cd"];

NSLog(@"%d:%d", range.location, range.length); //如果没有找到,则length = 0

 

//字符串转换为日期
NSDate *date1=[dateFormatter dateFromString:@"2010-3-3 11:00"];

 

//日期比较

 

首先,创建一个日期格式化对象:

NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];

 

然后,创建了两个日期对象:

NSDate *date1=[dateFormatter dateFromString:@"2010-3-3 11:00"]; 
NSDate *date2=[dateFormatter dateFromString:@"2010-3-4 12:00"];

 

创建日期对象,是通过字符串解析的。

然后取两个日期对象的时间间隔:

NSTimeInterval time=[date2 timeIntervalSinceDate:date1];

这里的NSTimeInterval 并不是对象,是基本型,其实是double类型,是由c定义的:

typedef double NSTimeInterval;

再然后,把间隔的秒数折算成天数和小时数:

int days=((int)time)/(3600*24); 
int hours=((int)time)%(3600*24)/3600; 
NSString *dateContent=[[NSString alloc] initWithFormat:@"%i天%i小时",days,hours];

 字符串转换为整数

1 NSString *aNumberString = @"123";
2 int i = [aNumberString intValue];

 

dobule di = [aNumberString doubleValue]; //转换为双精度

整数转换为字符串

1 int aNumber = 123;
2 NSString *aString = [NSString stringWithFormat:@"%d", aNumber];

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值