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. 倔强的网站数据抓取,关键时刻还需Webbrowser显身手

    由于最近台风挺多,公司网站上需要挂上台风预报信息,就整了个抓取台风数据(至于抓数据的概念和实践手册我以前写的一篇博客里面有介绍:分享一套抓数据小程序,客户资料.实时新闻.股票数据…随心抓)的服务,做调 ...

  2. virtualbox 安装ubuntu

    1. 下载已经安装好的ubuntu的virtualbox的vdi 下载地址: http://www.osboxes.org/ubuntu/ ubuntu 16.04 Xenial VirtualBox ...

  3. Cocos2d-x3.6 Android编译问题

    在Cocod2d-x论坛上看到越来越多人吐槽新版本更新太快,改动太大,而且经常有BUG导致升级要折腾很久很久..但我就是喜欢折腾,喜欢升级到最新版本,看看有了哪些新功能,哪些改进.为此也折腾了不少,遇 ...

  4. 【转】The difference between categorical(Nominal ), ordinal and interval variables

    What is the difference between categorical, ordinal and interval variables? In talking about variabl ...

  5. CI框架笔记

    @update 2016-4-2 13:45:35 一.目录结构 ci_demo ├─myapp 应用主目录 │ ├─autoload.php 自定义的自动加载文件(可选) │ ├─myapp.php ...

  6. paip.提升用户体验--提升java的热部署热更新能力

    paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力  "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应 ...

  7. 从range和xrange的性能对比到yield关键字(上)

    使用xrange   当我们获取某个数量的循环时,我们惯用的手法是for循环和range函数,例如: for i in range(10): print i 这里range(10)生成了一个长度为10 ...

  8. iframe 使用

    iframe框架中的页面与主页面之间的通信方式根据iframe中src属性是同域链接还是跨域链接,有明显不同的通信方式,同域下的数据交换和DOM元素互访就简单的多了,而跨域的则需要一些巧妙的方式来实现 ...

  9. 17数据表&E-R模型&概念数据模型上-选学天轰穿大话数据库视频教程

    大纲:解剖“数据表”,戏说E-R模型,概念数据模型(E-R 到 CDM),使用PowerDesigner创建概念模型,生成逻辑数据模型 土豆超清地址: 腾讯超清地址: 百度云盘下载地址:上传ing,稍 ...

  10. 阿里云产品介绍(二):云服务器ECS的孪生兄弟们

    上一篇介绍的云服务器ECS,是阿里云最基础的产品,也是每一个云计算厂商最基础的产品,俗称爆款.除了标准的云服务器,阿里云也不停的在推出面向特殊业务场地的云服务器,可以说是ECS的孪生兄弟们. 这一篇就 ...