对象的初始化

Fraction *myFract=[[Fraction alloc] init];//初始化对象

[myFract setTo:1 over:3];//设置初始值

初始化对象和设置初始值的过程通常可以合并到一个方法中。

myArray=[[NSArray alloc] initWithArray:myOtherArray];

常见的编程习惯类中的所有初始化方法都以init开头。

编写初始化方法的策略:

通过复写init方法达成目的;必须将父类init方法的执行结果赋值给self(因为初始化过程改变了对象在内存中的位置--意味着引用将要改变);如果有多个初始化方法,应把参数最多的初始化方法作为指定的初始化方法,其他的初始化方法调用指定的初始化方法,这样可以把大部分初始化代码集中到单个方法中。

-(Fraction *)initWith:(int)n over:(int)d
{
self=[super init];
if (self) {
[self setTo:n over:d];
}
return self;
}

初始化方法示例

为了符合初始化规则,应该重写Fraction类的init方法,这一点尤其在作为子类时特别重要;所有的初始化方法都应返回id类型,这是编写可能会被继承的类初始化方法的一般规则,因为子类的对象并不等同于父类。

作用域

@protected  可被该类及任何子类中定义的方法直接访问--接口部分定义的实例变量默认是这种作用域

@private  可被定义在该类的方法直接访问,当时不能被子类中定义的方法直接访问--实现部分定义的实例变量默认是这种作用域

@pubilc  可被该类中定义的方法访问,也可被其他类或模块中定义的方法直接访问

@package  对于64位映像,可以在实现该类的映像中的任何地方访问这个实例变量

全局变量

在程序的开始处(所有的方法、类定义和函数定义之外)编写int gMoveNumber=0,那么gMoveNumber即为全局变量,而且是外部全局变量。

惯例,g作为全局变量的首字母

需要访问别的文件中定义的全局变量,只需在声明前加上关键字extern。

#import <Foundation/Foundation.h>
#import "Foo.h" int gGlobalVar=;
int main(int argc, const char * argv[]) {
@autoreleasepool {
Foo *myFoo=[[Foo alloc] init];
NSLog(@"%i",gGlobalVar); [myFoo setgGlobalVar:];
NSLog(@"%i",gGlobalVar);
}
return ;
}

main方法

-(void) setgGlobalVar:(int) val
{
extern int gGlobalVar;
gGlobalVar=val;
}

Foo类的setgGlobalVar方法

结果:5

   10

静态变量

希望定义的全局变量只在特定的模块(文件)中是全局的,除了特定类中的方法之外没有其他方法需要访问这个特定变量。则该变量需要定义为静态变量。静态变量定义如下:static int gGlobalVar=0

枚举数据类型

enum flag{false,true};
enum direction{up,down,left=,right};
enum {east,west,south,north} direction;

枚举定义

 数据类型转换

如果其中一个操作数是long double,另一个操作数被转换为long double型,计算结果也是这种类型

如果其中一个操作数是double,另一个操作数被转换为double型,计算结果也是这种类型

如果其中一个操作数是float,另一个操作数被转换为float型,计算结果也是这种类型

如果其中一个操作数是Bool、char、short int、bit field或者枚举数据类型,全部转换为int型

如果其中一个操作数是long long int,另一个操作数被转换为long long int型,计算结果也是这种类型

如果其中一个操作数是long int,另一个操作数被转换为long int型,计算结果也是这种类型

到这一步,两个都是int,计算结果也为int

但是涉及到unsigned操作数时,转换规则更为复杂

位运算符(暂缓)

最新文章

  1. Linux 服务器 安装 memcached
  2. 关于strcpy_s
  3. Pojo类(plain ordinary java object)
  4. [转]揭秘webdriver实现原理
  5. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON SelectObj
  6. tornado异步请求的理解(转)
  7. Python-zip压缩-解压
  8. [jbdj]SpringMVC框架(3)映射器
  9. 树&#183;AVL树/平衡二叉树
  10. VirtualBox安装64位系统
  11. nginx 、springMvc(非分布式)相应的限流、消峰
  12. node+react 打包成功,控制台报错
  13. Linux下修改tomcat内存
  14. 精品绿色便携软件 &amp; 录制操作工具
  15. 面向对象(基础oop)之垃圾回收与静态成员
  16. Hadoop HBase概念学习系列之HBase里的4维坐标系统(第一步定位行键 -&gt; 第二步定位列簇 -&gt; 第三步定位列修饰符 -&gt; 第四步定位时间戳)(十八)
  17. MySQL----MySQL数据库入门----第一章 数据库入门
  18. Android反编译方法(class+xml)
  19. Linux下解压tar.xz文件
  20. 手把手教你用Vue2+webpack+node开发一个H5 app

热门文章

  1. Java泛型解析(03):虚拟机运行泛型代码
  2. 勾选Create git respository的作用
  3. MVC 5 Web编程2 -- URL映射
  4. SQL语句分享[不定期更新]
  5. centos 7安装mysql5.5
  6. Java发送get及post请求工具方法
  7. PHP激活用户注册验证邮箱
  8. C#:判断当前程序是否通过管理员运行
  9. 《STL源代码剖析》---stl_hash_set.h阅读笔记
  10. scala lift环境搭建