NSNubmer

NSNumber是一个类,该类中存在多种处理数值的方法,可直接创建该类的实例变量

 // 定义3个NSNumber类型的变量
NSNumber *myNumber, *floatNumber, *intNumber // 顶一个一个NSInteger的变量,NSInteger不是对象,而是使用typedef定义的一种数据类型
NSInteger myInt // 实例化一个NSNumber类,并为其设定一个100的整形数值,将这个类实例赋给intNumber
intNumber = [NSNumber numberWithInteger:]; // 调用NSNumber类中的integerValue方法获取整数值赋值给NSInteger类型变量myInt
myInt = [intNumber integerValue];

在上述例子中,integerValue只能获取integer类型的变量。

也可以通过手动分配内存的方式创建NSNumber类实例,如:

 // 创建一个包含整数类型,值为50的NSNumber实例变量
NSNumber *myNumber = [[NSNumber alloc] initWithInt: ];

注意,通过手动分配内存方式创建NSNumber实例变量的实例不能修改其值,否则会报错。

NSString

在Object-c中创建一个字符串变量非常简单,如:@"program "

但是注意,这里的字符串变量是常量,即一旦定义后,就不可以改变其值。它实际上是NSConstantString类的实例,该类是NSString的子类。

在NSLog中,可以通过%@来输出一个字符串常量

 NSString *myStr = @"this is a string";
NSLog(@"%@", myStr);

%@不仅仅可以显示字符串,还可以用它来打印一个对象。

当用%@来打印一个对象时,该对象会自动调用description方法,默认会打印出该对象的类名,以及该对象在内存中的地址,可以通过重写description方法来更改这一默认行为。

 NSString *str1 = @"string1";
NSString *str2 = @"string2";
NSString *ref; ref = [NSString stringWithString: str1];
str1 = [str1 uppercaseString];
str2 = [stringByAppendingString: str1];
8 ref = [str2 uppercaseString];

上述代码首先创建了3个NSString类型的常量变量

当更改其中任意一个常量值的时候,其实是更新了该类型所自定的内存地址,即指向了新的地址从而达到更新值的效果。

[NSString stringWithString: str1];

该语句会真是的去创建一个新的对象,该对象中值的地址会指向str1的内存地址

ref = str1;

只是简单的创建了一个指向str1对象的内存地址指针

注,上述所说的常量是指存储在内存中的值是常量,即存储在内存中的string1和string2是不可变更,而str1、str2和ref所指向的内存地址是可变的。在上述各个变更值的过程其实是创建了一个新的NSString对象并对其进行初始化操作。

第五行中系统创建一个新的对象并初始化其值为str1所指向的值赋给ref

第八行同样也是创建一个新的对象,但此时第五行创建的内存已经无法被引用了,不过不必担心,系统会自动对其销毁。

在NSString类中,一些方法在调用或返回时需要提供一个范围参数,Object-C提供了一种特殊类型:NSRange,这种类型实际上是定义的一个结构,该结构含有两个元素:location和length。这两个元素都是NSUinteger类型的变量。

 subRange = [str1 rangeOfString: @"string A"];
NSLog (@"String is at index %lu, length is %lu", subRange.location, subRange.length);

可通过NSMutableString类创建一个字符可变的对象,该类属于NSString的子类,所以该类的实例可以调用NSString类中定义的所有方法。

这里所说的可变指的是真正更改内存中存储的值

 #import <Foundation/Foundation.h>
int main (int argc, char * argv[]) {
@autoreleasepool {
NSString *str1 = @"This is string A";
NSString *search, *replace;
NSMutableString *mstr;
NSRange substr;
// Create mutable string from nonmutable
mstr = [NSMutableString stringWithString: str1];
NSLog (@"%@", mstr);
// Insert characters
[mstr insertString: @" mutable" atIndex: ];
NSLog (@"%@", mstr);
// Effective concatentation if insert at end
[mstr insertString: @" and string B" atIndex: [mstr length]];
NSLog (@"%@", mstr);
// Or can use appendString directly
[mstr appendString: @" and string C"];
NSLog (@"%@", mstr);
// Delete substring based on range
[mstr deleteCharactersInRange: NSMakeRange (, )];
NSLog (@"%@", mstr);
// Find range first and then use it for deletion
substr = [mstr rangeOfString: @"string B and “];
if (substr.location != NSNotFound) {
[mstr deleteCharactersInRange: substr];
NSLog (@"%@", mstr);
}
// Set the mutable string directly
[mstr setString: @"This is string A"];
NSLog (@"%@", mstr);
// Now let’s replace a range of chars with another
[mstr replaceCharactersInRange: NSMakeRange(, ) withString: @"a mutable string"];
NSLog (@"%@", mstr); // Search and replace
search = @"This is"; replace = @"An example of";
substr = [mstr rangeOfString: search];
if (substr.location != NSNotFound) {
[mstr replaceCharactersInRange: substr withString: replace];
NSLog (@"%@", mstr);
}
// Search and replace all occurrences
search = @"a"; replace = @"X";
substr = [mstr rangeOfString: search];
while (substr.location != NSNotFound)
{
[mstr replaceCharactersInRange: substrwithString: replace];
substr = [mstr rangeOfString: search];
}
NSLog (@"%@", mstr);
}
return ;
}

行6创建了一个NSMutableString类型实例变量mstr

行9将mstr指向的内存中的值设置为str1所指向的内存地址中所存储的值。当stringWithString方法返回给一个NSMutableString类型变量时会返回一个值可变的对象,而该方法返回给一个NSString类型变量时,返回的是一个值不可变的对象。

行12在mstr字符串中的指定位置插入给定的字符串,该方法没有返回值,因为它直接对mstr对象进行操作。

NSArray

Foundation框架基本数据类型的更多相关文章

  1. Foundation框架 - 结构体

    一.基础知识 如果要想使用 Foundation 框架的数据类型,那么包含它的主头文件就可以了.即 #import <Foundation/Foundation.h> 补充: Core F ...

  2. iOS Foundation 框架概述文档:常量、数据类型、框架、函数、公布声明

    iOS Foundation 框架概述文档:常量.数据类型.框架.函数.公布声明 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业 ...

  3. Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver

    ========================== Foundation框架下的常用类 ========================== 一.[NSNumber] [注]像int.float.c ...

  4. iOS开发系列—Objective-C之Foundation框架

    概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底 ...

  5. Foundation框架-NSString和NSMutableString

    可变与不可变的字符串 --1-- Foundation框架介绍 1.1 框架介绍 --2-- NSString 2.1 NSString介绍及使用 2.2 NSString创建方式  2.3 从文件中 ...

  6. Core Foundation框架

    转载自:http://blog.csdn.net/weiwangchao_/article/details/7744972 Core Foundation框架 (CoreFoundation.fram ...

  7. 08OC之Foundation框架

    1.Foundation框架简述 在前面,我们创建一个类的时候,都会选择Cocoa Class.到底Cocoa Class是什么东西呢? Cocoa 不是一门编程语言,因为它可以运行在多种编程语言上, ...

  8. Objective-C语言Foundation框架

    Mac OS X开发会使用Cocoa框架,它是一种支持应用程序提供丰富用户体验的框架,它实际上由:Foundation和Application Kit(AppKit)框架组成.iOS开发,会使用Coc ...

  9. foundation框架—结构体

    Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...

随机推荐

  1. Html5 学习系列(五)Canvas绘图API快速入门(1)

    引言:Canvas绘图API快速入门 在接触HTML5的初学者包括我都在很多地方见到非常炫的一些页面,甚至好多学习HTML5的开发者都是冲着Web端的页游去的,那么HTML5那么绚丽的页面效果以及游戏 ...

  2. Java程序员的日常 —— static的用法讲解实践

    之前文章说过Java中static的作用,有朋友想看个例子.于是便抽空写了个小栗子 代码 package xing.test.thinking.chap5; class A{ public A() { ...

  3. atitit. js 跨界面 页面 web cs 传值方法总结

    atitit. js 跨界面 页面 web cs 传值方法总结 #--需求 js #---两个方法:   直接传跟跟间接传递... 1.直接传跟new form(param)    web使用url方 ...

  4. paip.java 注解的详细使用代码

    paip.java 注解的详细使用代码 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/att ...

  5. Tamper Data

    一款可以修改表单的火狐浏览器插件

  6. 学习Git

    参考廖雪峰老师的个人网站:http://www.liaoxuefeng.com 版本库初始化 通过git init命令将这个命令变为git可以管理的仓库 添加文件 用命令git add file告诉G ...

  7. 一个jsonp的简单实例

    <script type="text/javascript"> //添加<script>标签的方法 function addScriptTag(src){ ...

  8. iphone6 plus 为什么打印出的宽度是375

    首先看一张比较简单明了的 iPhone 6 与 iPhone 6 Plus 对比图,来自 PaintCode 的<The Ultimate Guide To iPhone Resolutions ...

  9. Could not find a storyboard named 'Main' in bundle NSBundle

    转自:http://www.cnblogs.com/ygm900/p/3836580.html 1.删掉工程中main.storyboard 后要删除plist文件中对应的键值,否则会报如下错误: C ...

  10. 使用VSTS/TFS搭建iOS持续集成环境

    TFS 自2015版开始支持跨平台的持续集成环境,通过提供开源的build agent为 Windows / linux / macOS 提供了统一的持续集成环境管理能力.这篇文章给大家介绍一下如何使 ...