Foundation kit
基本数据
结
构入
门
Cocoa
有两个不同的框架组成:Foundation kit
和Application kit
。Application kit
包含了所有的用户接口对象和高级类。Foundation kit
中有很多有用的,面向数据的低级类和数据类型,如Nsstring
、NsArray
、NsEnumerator
、NsNumber
等。本章主要介绍Foundation kit
的一些基本数据结构。
一、常用的
结
构体
1.NSRange
:
typedef
struct_NSRange
{
unsigned int location;
unsigned int length;
}
NSRange
可以使用3
中方式赋值:
<1>
直接赋值
NSRange
range;
range.location
= 1;
range.length
= 10;
<2>
使用c
语言聚合结构赋值机制
NSRange
range = {1, 10};
<3>
使用Cocoa
提供的函数:NSMakeRange();
NSRange
range
= NSMakeRange(17, 4);
2.NSPoint
和
NSSize:
typedef struct NSPoint {
float
x;
float
y;
}NSPoint;
typedef struct NSSize {
float
width;
float
height;
}NSSize;
Cocoa
提供了一个
矩形的结构体:
typedef struct _NSRect {
NSPoint
origin;
NSSize
size;
} NSRect;
如同NSRange
,Cocoa
为我们提供了创建这些结构体的函数:NSMakePoint(),NSMakeSize(),NSMakeRect()
。
Cocoa
使用结构体定义这些类型,而不是用对象,主要是出于性能上的考虑。
二、字符串
NSString
创
建方式可以采用如下方式
:
NSString
*height;
height = [NSString
stringWithFormat:@"%@",@"fs"];
NSLog(@"height:%@", height);
其中
stringWithFormat
方法定
义
如下:
+ (id)stringWithFormat:(NSString *)
format,
...
前面的
+
表示
该
方法
为类
方法,并非
实例方法。而创建对象的类方法称为工厂方法。
NSString
的长度可以通过length
方法得到,
如下所示:
long l = [height length];
NSLog(@"%li",l);
NSString
的比较类似与java
,如果通过==
比较,是进行指针的比较,如果相比较值是否相同使用
isEqualToString
;
但是需要注意,采用stringwithString
方式初始化,与采用直接赋值的方式初始化,指针指向的是相同对象:
NSString *s1 = [NSString stringWithString:@"32k"];
NSString *s2 =
[NSString stringWithString:@"32k"];
NSString *s3 =
[NSString stringWithFormat:@"%dk", 32];
NSString *s4 =
@"32k";
NSString *s5 =
[NSString stringWithFormat:@"%@", @"32k"];
if ([s1
isEqualToString:s2]) {
NSLog(@"s1 isEqualToString:s2");
}
if (s1 == s2) {
NSLog(@"s1 == s2");
}
if (s3 == s1) {
NSLog(@"s3 == s1");
}
if (s1 == s4) {
NSLog(@"s1 == s4");
}
if (s1 == s5) {
NSLog(@"s1 == s5");
}
其打印结果为:
2011-10-26 23:12:26.955 NSStringTest[561:707] s1
isEqualToString:s2
2011-10-26 23:12:26.956 NSStringTest[561:707] s1
== s2
2011-10-26 23:12:26.956 NSStringTest[561:707] s1
== s4
Program
ended with exit code: 0
字符串间的比较也可以通过compare
函数进行:
if ([@"adb" compare:@"ssd"] ==
NSOrderedSame) {
NSLog(@"NSOrderedSame");
}
else if
([@"adb" compare:@"ssd"] == NSOrderedAscending) {
NSLog(@"NSOrderedAscending");
}
else if
([@"adb" compare:@"ssd"] == NSOrderedDescending) {
NSLog(@"NSOrderedDescending");
}
if
([@"Ssd" compare:@"ssd" options:NSCaseInsensitiveSearch] ==
NSOrderedSame) {
NSLog(@"NSOrderedSame");
}
else if
([@"Ssd" compare:@"ssd" options:NSCaseInsensitiveSearch] ==
NSOrderedAscending) {
NSLog(@"NSOrderedAscending");
}
else if
([@"Ssd" compare:@"ssd" options:NSCaseInsensitiveSearch] ==
NSOrderedDescending) {
NSLog(@"NSOrderedDescending");
}
其中
NSOrderedDescending
是枚举定义的。 Option
为是否添加比较的参数。即是否需要不区分大小写,或者是否是数字比较等。。。
可以通过如下方式判断是否包含子串:
if ([@"sscd"
hasPrefix:@"ssc"]) {
NSLog(@"hasPrefix");
}
if ([@"sscd"
hasSuffix:@"scd"]) {
NSLog(@"hasSuffix");
}
NSRange range = [@"abcdef"
rangeOfString:@"cde"];
NSLog(@"%ul %ul",
range.location, range.length);
创建变长字符串:
NSMutableString
可以使用stringWithCapacity
来创建一个实例。其原理类似与stringBuffer
。不多赘述
NSMutableString
*mutableString = [NSMutableString stringWithCapacity:30];
[mutableString appendFormat:@"f%@",@"fsd"];
NSLog(@"%@", mutableString);
NSRange r = [@"ffsd" rangeOfString:@"fs"];
[mutableString deleteCharactersInRange:r];
NSLog(@"%@", mutableString);
首先:
stringWithCapacity:30
中的
30
只是一个参考,并不最
终
决定字符串的
长
度。其余方法可以参考代
码
;
分享到:
相关推荐
这儿的运行时系统扮演的角色类似于Objective-C语言的操作系统,Objective-C基于该系统来工作。本文档将具体介绍NSObject类以及Objective-C程序是如何和运行时系统交互的。特别地,本文档还给出来怎样在运行时动态地加
Objective-C iOS StoreKit 原生内购订阅代码封装,语言是Objective-C,内含demo,可以二次封装给其他开发工具使用. 支持Unity3D,cocos,xamarin...等开发工具进行二次封装使用.
《objective-c程序设计》通过大量的实例系统地介绍了objective-c语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读《objective-c程序设计》后,可以掌握objective-c语言的基本内容,并进行实际的iphone/...
Objective-C 是一种通用、面向对象的编程语言,广泛应用于 macOS 和 iOS 等苹果平台...本教程提供了 Objective-C 的基本语法和一些示例,希望能够帮助你快速入门 Objective-C 编程,并开始构建 macOS 和 iOS 应用程序。
Objective-C语言的许多决策可以在编译和运行时执行。只要有可能,它是动态的。这意味着Objective-C语言不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。Runtime系统是一种用于Objective-C语言的操作系统...
希望这个简单的Objective-C语言教程能够为你提供一个入门的起点。Objective-C是一种面向对象的编程语言,广泛应用于Mac OS和iOS开发。通过学习Objective-C的基本语法、类和对象、控制流程和方法等内容,你将能够编写...
Objective-C基础教程(入门教程).pdf
Objective-C 基础教程,从入门到精通 Objective-C 基础教程,从入门到精通,是你学习 Objective-C 的经典之作。
Objective-C 入门指南 中文 Objective-C 入门指南 Objective-C 入门指南 Objective-C 入门指南 Objective-C 入门指南
用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式。.zip用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式。.zip用Objective-C语言实现了各种设计...
《Objective-C 程序设计(第4版)》作者假设读者没有面向对象程序语言或者C语言(Objective-C基础)编程经验,因此,初学者和有经验的程序员都可以使用这本《Objective-C 程序设计(第4版)》学习Objective-C。...
C语言主要知识点巩固(学习Objective-C 的前提),PPT格式。
objective语言快速入门的绝佳途径,是视频教程的完整ppt课件,涵盖所有知识点,后出版书目为《iphone与ipad》开发实战的前半部分语言学习!
中文名: Objective-C基础教程 作者: Mark Dalrymple Scott Knaster译者: 高朝勤 杨越 刘霞图书 分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社 书号: ISBN: 9787115208774 发行时间: 2009...
Objective-C是创建Mac OS应用和iPhone应用的主要语言,优雅的面向对象编程环境与C语言特性珠联璧合,造就了它的不俗表现。 本书全面而系统地讲述Objective-C语言的基础知识和面向对象编程的重要概念,结合实例...
在windows系统下搭建Objective-C开发环境,由于公司要做iphone开发,个人学习objc(Objective-C)语法,所以在windows7下搭建了一个objc开发环境,现把自己整理的帮助文档拿来与大家分享,希望能对大家有所帮助。...
这是一个基于Objective-C语言的基础案例集 旨在用于给初学者快速了解Objective-C语言的语法 .zip
elcome to Learn Objective- C on the Mac! This book is designed to teach you the basics of the Objective- C language. Objective- C is a superset of C and is the language used by many (if not most) ...