`
cuichang
  • 浏览: 92739 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Objective-C最基础语法之基础类型

阅读更多

我对OC了解还不深,只知道一些最基础的东西,总结一下。

  1. 基础数据类型
在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位的。
  • BOOL
OC里面的bool值的取值是YES和NO,而不是TRUE和FALSE。
  • NSNumber
 有人说既然都有了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]];
  • NSString、NSMutableString
字符串一直是个比较复杂的类型,提供的功能很多,涉及的问题也比较多,比如字符串的比较、格式化、拼接等等,这可以专门开一个专题,这里只是简单介绍一下。
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"
  •  NSArray、NSMutableArray
   这是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;
  •  NSDate      
日期和时间。OC里面的日期类使用起来比较复杂,即使是实现简单的加一天减一个小时这样的操作都要经过很多的代码从能实现,这里只是一带而过,在其他的文章里会重新提到。
获取当前时间的代码为:
 NSDate *today = [NSDate date];
 这里不得不发一些牢骚,很多人都说OC是多么多么优美的语言,但个人感觉有不少地方实在谈不上优美,就比如这个NSDate,功能是蛮强大的,但使用起来真的很不方便,对于新手而言完全是无从下手。这且不说,获取当前时间居然用的不是today而date,如果没了解过,谁会想到date=today?     
  • nil
OC里面空指针对象是nil,而不是null。
  • id
OC支持动态类型,也就是在写代码的时候不确定是声明类型,在程序运行的时候从能判断。动态类型的变量用id来声明,比如:
 id tem = 1;//注意是id,而不是id *,除非你真的真的是想声明一个这样的指针
tem = @"abc";
tem = [[myClass alloc]init];
  •    @selector
selector是个非常特殊的类型,有点类似与函数指针,可以把一个函数当作参数来传递。这个需要专门讨论。


转自:http://longer3436.blog.163.com/blog/static/128330622010112011408123/

分享到:
评论

相关推荐

    Objective-C程序设计

    《objective-c程序设计》通过大量的实例系统地介绍了objective-c语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读《objective-c程序设计》后,可以掌握objective-c语言的基本内容,并进行实际的iphone/...

    Objective-C基础教程 中文 PDF 清晰版 [31M]

    中文名: Objective-C基础教程 作者: Mark Dalrymple Scott Knaster译者: 高朝勤 杨越 刘霞图书 分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社 书号: ISBN: 9787115208774 发行时间: 2009...

    [Objective-c程序设计].杨正洪等.扫描版

    《Objective-C程序设计》(作者杨正洪、郑齐心、李建国)通过大量的实例系统地介绍了Objective-C语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读本书后,可以掌握Objective-C语言的基本内容,并进行...

    word源码java-ocprjs:这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语

    这个案例是关于基础知识的案例之基本数据类型使用以及输入输出 ocprj2 这个案例是关于循环结构的案例集,包括:for,while,do...while等循环。 ocprj3 这个案例是选择结构的案例集,包括:if,if...else,switch...case ...

    Objective-C

    这些资源详细介绍了Objective-C的基本语法、数据类型、控制结构以及面向对象编程的核心概念,帮助开发者建立起坚实的编程基础。 其次,网络上有很多在线学习平台、视频教程和博客文章,这些资源为学习者提供了更加...

    Object-c的概要介绍与分析

    Objective-C 是一种面向对象的编程语言,广泛应用于苹果的 macOS 和 iOS 操作系统上的软件开发...1. **Objective-C基础**:介绍Objective-C的历史、环境搭建、基本语法,包括变量、数据类型、控制结构等。 2. **面向对

    使用Objective-C进行iOS移动开发

    【课程内容】包含Objective-C语言的基本数据类型,基础语法以及进阶知识。同时还讲解了流程控制、字符串、集合类型、函数和闭包等。此外、面向对象、结构体、类Class,以及手动内存管理、自动内存管理、协议与抽象...

    iPhoneObjective-C基础语法详解

    C这门语言就不得不学会我们都知道C语言是没有面向对象的而Object-C则是ANSIC的一个严格超集它是具有面向对象的特性的由于IPHONE的成功让这门语言现在非常的火热今天笔者为大家介绍一下在xcode中使用Objective-C的...

    Objective-C的入门学习笔记

    对于一门语言得学习,个人觉得最主要得就是其语法格式和那些关键字。 因为对于基本现在大多数得语言,每种语言都是一种符合人思维得方式来与计算机交流。 因此,其实每种语言中定义或是封装好得基础类和类库,其实都...

    简单讲解Objective-C的基本特性及其内存管理方式

    Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码。 可以使用OC开发mac osx平台和ios平台的应用程序。 拓展名:c语言-.c OC语言.-m 兼容C++.-mm 注:...

    iPhone应用开发从入门到精通代码

    Objective-C语言的语法基础454.1 Objective-C中的对象、类和方法454.1.1 对象454.1.2 类474.1.3 接口和实现474.1.4 方法484.2 Objective-C语言的基本语法介绍484.2.1 文件类型494.2.2 类的声明494.2.3 方法...

    ios基础知识开发介绍.zip

    Objective-C是苹果公司早期推出的面向对象的编程语言,它结合了C语言的强大功能和面向对象的特性,是早期iOS开发的主要语言。而Swift则是近年来苹果公司推出的新型编程语言,它语法简洁、类型安全,并且支持面向对象...

    iOS高级程序员进阶——语法雷区篇

    无论是Objective-C语言还是Swift语言,其都有非常巧妙的设计思想与丰富的语法特性。在编写程序时,编程语言是最基础的工具,工具是否用的顺手会直接影响到所编写程序的效率与质量。还有很多时候,一种场景我们知道...

    Swift5.1 官方中文教程 完整版.pdf

    该语言为C和Objective-C的类型提供了自己的版本,包括Int、Double、Float、Bool和String等,同时也提供了更高效的集合类型,如Array、Set和Dictionary。Swift还引入了元组类型,允许创建和传递一组数据,可用作函数...

    up-and-running-with-swift-2

    Swift的设计师借鉴了新一代最佳语言,同时还基于C和Objective-C的成功发展。 Swift具有用于安全编程的强大类型系统,并添加了许多功能以简化程序员的生活。 即使只有不到一年的历史,Swift仍然以其灵活性和表现力而...

    Cocos2D-X游戏开发技术精解

    2.3.2 Objective-C与C++的混合编译 41 2.4 引擎的启点 42 2.4.1 应用程序入口 43 2.4.2 引擎应用入口 44 2.5 丰富的示例程序 46 2.5.1 TestCpp示例项目 46 2.5.2 脚本示例项目 47 2.5.3 MoonWarriors示例项目 47 2.6...

Global site tag (gtag.js) - Google Analytics