Objective

前言

在第二天里, 我们学习了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的方法实在太多了, 这里没法一一介绍, 有兴趣的朋友们, 可以自行去苹果官方文档里查找, 里面还有非常详细的例子, 这次我们就讲到这里, 下次再见~~~

原文地址:https://www.cnblogs.com/iOSCain/p/4282844.html