我对OC了解还不深,只知道一些最基础的东西,总结一下。
在OC里面也可以使用C的基础类型,比如int,float等,但一些OC的基础类型有与C的对应的,看上去很类似,却提供了更多的功能和特性。比如string和NSString,string就是普通的C语言的字符串,而NSString是一个object,不仅包含了字符串,还有一些跟显示相关的接口等,你可以直接在屏幕上打印输出一个NSString,却不能对string这样操作。
- NSInteger、NSUInteger、CGFloat
这几个类型跟C里的类型基本是一样的,但还是稍有不同,这其实是“type define”,比如NSInteger的定义是这样的:
#if_LP64_||NS_BUILD_32_LIKE_64 typedef long NSInteger; typedef unsigned long NSInteger; #else typedef int NSInteger; typedef unsigned int NSInteger; #endif |
也就是说当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。
OC里面的bool值的取值是YES和NO,而不是TRUE和FALSE。
有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?它们的功能当然是不同的。
NSInteger是基础类型,但是NSNumber是一个类。如果想要存储一个数值,直接用NSInteger是不行的,比如在一个Array里面这样用:
NSArray *array = [[NSArray alloc]init]; [array addObject:3];//会编译错误 |
这样是会引发编译错误的,因为NSArray里面放的需要是一个类,但‘3’不是。这个时候需要用到NSNumber:
NSArray *array = [[NSArray alloc]init]; [array addObject:[NSNumber numberWithInt:3]]; |
字符串一直是个比较复杂的类型,提供的功能很多,涉及的问题也比较多,比如字符串的比较、格式化、拼接等等,这可以专门开一个专题,这里只是简单介绍一下。
OC里面有个特殊的符号:“@”,这个符号大概的意思是表示“这是OC的”。在使用NSString的使用双引号的前面一定要加这个符号,否则就是普通的C字符串。而且NSString是一个类,定义一个NSString的变量的时候要使用指针。比如:
NSString *str = "a string";//这是错误的 NSString str =@"a string";//这也是错误的 NSString *str = @"a new string";//这是正确的 |
一个NSString变量赋值了之后不能改变其值(当然可以重新给它赋其他的值),当需要使用可变的字符串的时候可以使用NSMutableString。NSMutableString继承值NSString,额外提供了一些改变值的方法。比如:
NSMutableString *str = @""; [str appendString:@"hello "];//str = @"hello " [str appendFormat:@"my number is:%d",1];//str = @"hello my number is 1" |
这是OC里面的两个集合。顾名思义,NSArray的容积是固定的,而NSMutableArray的是可变的,当添加的对象多余容积时会自动扩增。存放入集合中的一定是一个类的实例。 初始化一个NSArray的代码如:
NSArray *array = [NSArray arrayWithObjects:obj1,obj2...,nil];//注意要以nil结尾,否则会有编译警告 |
NSArray常用的属性当然就是count了,比如
NSUInteger count = [array count];// |
当要判断一个集合里面是否包含某个元素的时候需要注意,使用的方法跟.net里面的稍有不同,如:
if ([array indexOfObject:obj3] == NSNotFound]{ //do something } |
NSMutableArray的使用方法跟NSArray的类似,常用的方法有:
+ (NSMutableArray *)array; - (void)addOvject:(id)object; - (void)removeObject:(id)object; - (void)removeAllObjects; - (void)insertObject:(id)object atIndex:(unsigned)index; |
- NSDictionary、NSMutableDictionary
OC的字典集合,跟其他语言的字典类似,跟NSArray一样,当直接调添加若干个对象的初始化方法时,要以nil结尾,比如:
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:obj1,@"key1",obj2,@"key2",nil];//注意以nil结尾 |
当需要判断是否包含某个元素的时候,不是调用contain方法,而是直接判断返回的值是不是nil,比如:
if ([dic objectForKey:@"key3"]){ //这里的代码不会执行,因为key3返回的是nil } |
NSMutableDictionary的使用方法类似,常用的方法有:
+ (NSMultableDictionary *)dictionary; - (void)addObject:(id)object forKey:(id)key; - (void)removeObjectForKey:(id)key - (void)removeAllObjects; |
日期和时间。OC里面的日期类使用起来比较复杂,即使是实现简单的加一天减一个小时这样的操作都要经过很多的代码从能实现,这里只是一带而过,在其他的文章里会重新提到。
获取当前时间的代码为:
NSDate *today = [NSDate date]; |
这里不得不发一些牢骚,很多人都说OC是多么多么优美的语言,但个人感觉有不少地方实在谈不上优美,就比如这个NSDate,功能是蛮强大的,但使用起来真的很不方便,对于新手而言完全是无从下手。这且不说,获取当前时间居然用的不是today而date,如果没了解过,谁会想到date=today?
OC里面空指针对象是nil,而不是null。
OC支持动态类型,也就是在写代码的时候不确定是声明类型,在程序运行的时候从能判断。动态类型的变量用id来声明,比如:
id tem = 1;//注意是id,而不是id *,除非你真的真的是想声明一个这样的指针 tem = @"abc"; tem = [[myClass alloc]init]; |
selector是个非常特殊的类型,有点类似与函数指针,可以把一个函数当作参数来传递。这个需要专门讨论。
转自:http://longer3436.blog.163.com/blog/static/128330622010112011408123/
分享到:
相关推荐
21. 消息传递机制(Messaging):Objective-C最显著的特点之一就是它的消息传递机制,它允许方法在运行时被调用,这种灵活性是Objective-C优于其他静态类型语言的重要优势。 22. 条件编译指令(Conditional ...
### Objective-C基础语法学习项目详解 #### 一、Objective-C简介 Objective-C是一种面向对象的编程语言,由Smalltalk和C语言发展而来。它在20世纪80年代初被设计出来,并在苹果公司开发iOS和macOS应用程序时得到了...
本基础案例集旨在帮助初学者深入理解Objective-C的语法特性,通过实际代码示例来提升学习效果。 Objective-C是在C语言的基础上扩展的,因此了解C语言的基本概念是必要的。C语言提供了基本的数据类型(如int、char、...
这个基础案例集是专为初学者设计的,目的是帮助他们迅速掌握Objective-C的基本语法和概念。以下是一些关于Objective-C的关键知识点: 1. **类与对象**:Objective-C是基于Smalltalk的,它引入了类(Class)的概念,...
Objective-C是在C语言基础上扩展的,引入了Smalltalk的面向对象特性,如消息传递机制,使得代码更加灵活和可扩展。 "第二讲 数据类型、运算符和表达式"深入讲解了基本的数据类型,包括整型、浮点型、字符型等,以及...
1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此,理解C语言的基本语法是必要的。Objective-C添加了消息传递机制、类和协议等面向对象特性。 2. **消息传递**:Objective-C中的对象通过发送消息来...
在掌握了这些C语言基础知识后,你将更好地理解和学习Objective-C,因为Objective-C是在C语言的基础上扩展的面向对象编程语言,它保留了C的大部分语法,并引入了类、消息传递等面向对象特性。因此,牢固的C语言基础...
中文名: Objective-C基础教程 作者: Mark Dalrymple Scott Knaster译者: 高朝勤 杨越 刘霞图书 分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社 书号: ISBN: 9787115208774 发行时间: 2009...
Objective-C继承了C语言的基础语法结构,并在此基础上增加了面向对象的特性,包括类(Class)、对象(Object)、消息传递(Message Passing)等概念。具体特点如下: 1. **动态性**: Objective-C是一种动态类型的语言,这...
Objective-C++是为了在Objective-C的基础上支持C++的语法和特性,比如模板、命名空间、抽象类、虚函数等。`.mm`文件扩展名用于Objective-C++源代码,`.m`用于Objective-C。Objective-C++允许你在Objective-C的类中...
Objective-C是一种面向对象的编程语言,它在C语言的基础上增加了面向对象的功能。由于Objective-C是苹果公司在其操作系统(如macOS和iOS)上开发应用的主要语言之一,因此对于想要从事苹果平台软件开发的开发者来说...
通过阅读这三本书,读者将全面了解Objective-C的各个方面,从基础语法到高级特性和最佳实践。无论是刚开始接触Objective-C的新手,还是希望深入理解语言内部机制的有经验开发者,这些资源都能提供宝贵的知识。为了更...
1. **Objective-C语法**:Objective-C的语法基于C语言,但引入了类、接口和消息传递等概念。这包括定义类、属性(@property)和方法(@selector)的语法,以及理解类接口(.h)和实现(.m)文件的作用。 2. **对象...
首先,"Programming In Objective-C.chm" 是一本关于Objective-C编程的电子书,可能涵盖了语言的基本语法、类和对象的概念、消息传递机制、内存管理(在Objective-C中是ARC,即自动引用计数)、类别、协议、 Blocks...
1. **基础语法**:Objective-C的基础语法与C语言类似,但增加了消息传递机制。如类的定义、对象的创建、方法的声明与实现等。学习时需要掌握如何定义一个类,以及如何通过`@interface`、`@implementation`和`@end`...
通过学习Objective-C的基础语法和面向对象的概念,开发者可以更好地理解和利用iOS及macOS平台提供的各种功能和技术。随着Swift的发展,Objective-C的应用场景可能会逐渐减少,但对于想要深入了解苹果技术栈的开发者...
Objective-C是一种面向对象的编程语言,它在C语言的基础上扩展了一些特性,主要应用于Apple的iOS和macOS平台上的软件开发。XCode是Apple提供的一款集成开发环境(IDE),集成了代码编辑器、编译器、调试工具等,是...