前言
在第二天里, 我们学习了OC语言中的三大特性, 封装, 继承, 多态, 那么在今天, 我们主要来学习OC语法中的其他知识.
开始
在C语言里, 我们都知道没有字符串的标准写法, 只能用char[]数组, 或者char *的方式来存储字符串, 那么在OC里又是怎么样存储字符串的呢? 有没有专门的类用来存储字符串? 下面让我们一起来探讨一下~~
例子:
#import <Foundation/Foundation.h> @interface Person : NSObject @end @implementation Person @end int main() { char *name = "hahaha"; NSLog(@"%s", name); return 0; }
上面就是我们常规的字符串写法, 但是到了OC就不一样了, 下面让我们来看看:
#import <Foundation/Foundation.h> @interface Person : NSObject @end @implementation Person @end int main() { char *name = "hahaha"; NSLog(@"%s", name); NSString *str = @"heiheihei"; NSLog(@"%@", str); return 0; }
输出结果:
Cain:3.第三天 Cain$ cc 01-NSString.m -framework Foundation Cain:3.第三天 Cain$ ./a.out 2015-01-19 15:32:56.028 a.out[19082:2111143] hahaha 2015-01-19 15:32:56.029 a.out[19082:2111143] heiheihei
NSString是OC中专门存储字符串的类, 而且它存储方式和C语言的不同, 是用[@" "], 输出用的是[%@], 但效果和C语言是一样.
那么NSString就只有那么简单吗? 答案肯定是否定的, NSString还有很多方法, 比如字符串拼接:
#import <Foundation/Foundation.h> @interface Person : NSObject @end @implementation Person @end int main() { int a = 10; int b = 20; NSString *str = [NSString stringWithFormat:@"%d 减去 %d = 10", b, a]; NSLog(@"%@", str); return 0; }
输出结果:
Cain:3.第三天 Cain$ cc 01-NSString.m -framework Foundation Cain:3.第三天 Cain$ ./a.out 2015-01-19 15:38:44.641 a.out[19096:2113635] 20 减去 10 = 10
这样子也是同样能输出我们想要的结果,
在C语言中, 我们如果要获取字符串的长度, 得费一些时间去算, 比如:
char *name = "嘿嘿aaa";
长度是9, 一个中文文字长度是3, 加起来是9, 虽然我们知道怎么去算, 但这种算法在我们日常开发中是非常少用到的, 我们不关心它有多长, 我们只关心它有多少个字符, 而NSString就实现了这个功能:
#import <Foundation/Foundation.h> @interface Person : NSObject @end @implementation Person @end int main() { int a = 10; int b = 20; NSString *str = [NSString stringWithFormat:@"%d 减去 %d = 10", b, a]; NSLog(@"%ld", [str length]); return 0; }
输出结果:
Cain:3.第三天 Cain$ cc 01-NSString.m -framework Foundation Cain:3.第三天 Cain$ ./a.out 2015-01-19 15:45:47.827 a.out[19130:2116421] 13
这也是面向对象的思想, 我想知道你的属性, 我就调用你的一些方法来获得我想知道的东西.
但由于NSString的方法实在太多了, 这里没法一一介绍, 有兴趣的朋友们, 可以自行去苹果官方文档里查找, 里面还有非常详细的例子, 这次我们就讲到这里, 下次再见~~~