NSString笔记与OC"命名空间"

来源:互联网 发布:杭州恩牛网络借壳上市 编辑:程序博客网 时间:2024/06/03 09:56

NSString的创建方式有

1、也是最简单的一种方式,

NSString *str0 = @"HelloWorld";

2、第二种赋值方式跟第一种很像

NSString *str2 = [NSString stringWithString:@"我是字符串"];

3、第三种带格式化的赋值方式

NSString *str1 = [NSString stringWithFormat:@"我的名字:%@ 我的年龄:%d ",@"swift", 25];

4、可以通过C语言字符串来创建NSString类型

char *chr="char";NSString *str3 = [NSString stringWithUTF8String:chr];char *ccc = [str UTF8String];//NSString 转C语言字符串类型

字符串比较需要用[str0 isEqualToString:str1]如果仅仅使用str0==str1这样比较的只是str0跟str1的指针而不是字符串内容


5、OC字符串比较与c语言区别

//c语言比较字符串char string1[] = "string!"; char string2[] = "string!"; if(strcmp(string1, string2) == 0){     NSLog(@"1"); }//oc比较字符串NSString *astring01 = @"This is a String!"; NSString *astring02 = @"This is a String!"; BOOL result = [astring01 isEqualToString:astring02]; NSLog(@"result:%d",result);</span>

6、字符串截取

<span style="font-size:18px;">NSString *string1 = @"This is a string";NSString *string2 = [string1 substringToIndex:3];//从字符串的开头一直截取到指定的位置,但不包括该位置的字符NSString *string1 = @"This is a string";NSString *string2 = [string1 substringFromIndex:3];//以指定位置开始(包括指定位置的字符),并包括之后的全部字符NSString *string1 = @"This is a string";NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)];//按照所给出的位置,长度,任意地从字符串中截取子串

OC“命名空间”

OC中是没有命名空间这个概念的所以我加了个引号,但是为了区分在不同框架中可能会使用到相同名字的变量冲突的情况OC使用前缀来区别

objective c没有像c++ 跟c#那样有命名空间或者Java中的包的概念

为了保证模块化机制来类名和方法名冲突的问题

objective c在不同框架中使用不同的前缀来解决这个问题

在Objective-C应用中的所有类名都必须是全局唯一的。由于很多不同的框架中会有一些相似的功能,

所以在名字上也可能会有重复(users, views等等),苹果官方文档规定类名需要有2-3个字母作为前缀。

同样我们根据类前缀也也能判断我们所用的类是哪个框架里的

这样我们就可以实现跟命名空间相同的作用了。


OC中没有类似Java中的包名这个概念,取而代之的是程序设计师必须给类名加上前缀,使用前缀可以有效的防止名称冲突。所以很多类都是以NS开头,如NSString、NSArray(前缀都是NS)就不难理解其作用了。
同样为了避免跟C、C++的关键字冲突,所有的OC关键字都以@开始,比如
  @interface,@implementation,@end
  @public、@protected、@private,@selector
  @try、@catch、@throw、@finally
  @protocol,@class
  OC2.0中引入的新关键字有
  @property,@synthesize
  @optional,@required,@dynamic


0 0
原创粉丝点击