SherlockChan

SherlockChan的笔记

来自iPhone开发之基本数据类型转换(0)

*oc中可以从任意基本数据类型转换到另外的基本类型*转换分为默认转换和强制转换*整型、字符型、浮点型的数据在混合运算中相互转换遵循的原则:   1.容量小的类型默认转换为容量大的数据类型,数据类型按容量大小排序为:    Byte,short,char -->int -->long -->float -->double    2.Byte,short,char之间不会相互转换,他们三者在计算时首先会转换成int类型。    3.容量大的数据类型转换成容量小的数据类型,要加上强制转换符,但可能造成精度降低或溢出,使用时要格外注意。    4.实数常量(如:2.9)默认为double,整数常量(如:123)默认为int。

来自iPhone开发之OC运算符和表达式(0)

一、运算符算术:+、-、*、/、%、++、--关系:>、<、>=、<=、==、!=逻辑:|、&、!、^、&&、||位运算:&、|、^、-、>>、<<、>>>赋值运算符: =扩展赋值运算符:+=、-=、*=、/=二、表达式 

来自iPhone开发之if条件和for循环语句(0)

一、三目运算符x ? y :zx为Boolean 类型表达式,先计算x的值,若为true,则整个三目运算符的结果为表达式y的值,否则整个表达式的值为z的值。二、语句if ...else 语句,和java相似。for循环语句,和java相似。 

来自iPhone开发之while、break和continue(0)

break,终止循环。continue是跳过某次循环,执行下次循环。

来自iPhone开发之swtch语句(0)

switch语句:switch的值必须是int类型。

来自iPhone开发OC基础语法复习(0)

标示符:字母,下划线、美元符号、数字组成,但是不能以数字开头,大小写敏感。见名之意,不能和保留字相同。关键字:oc中的保留字。常量注意点:字符常量由单引号,字符串常量由双引号。执行过程中的内存管理:代码区:存放代码数据区:静态常量和字符串常量栈:局部变量堆:动态分配内存,alloc出来的。局部变量:方法或者语句内部定义的变量。实例变量:方法外部、类的内部定义的变量。基本数据类型变量指针数据类型变量char类型,对应一个ascll码.Boolean 类型可以取true或false,也可以是0或非0的整数代替true和false。void 通常与方法一起使用。id是oc中独有的数据类型,它可以存储任何类型的对象。id number, %p。基本数据类型相互转换:Byte ,short ,char 在计算时首先会转换成int类型。强制类型转换可能会造成精度损失。switch的选择值必须是int,但是可以传入Byte,short,char 

来自【无限互联】iOS开发视频教程 3.1 面向对象的基本概念—类和对象(0)

类是对同一类事物的高度抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法)。对象是类的一个实例,是一个具体的事物。类与对象是抽象与具体的关系。类其实就是一种数据类型,它的变量就是对象。类与类的继承关系。多态。 

来自【无限互联】iOS开发视频教程 3.2 类的声明和对象的创建—内存分析(0)

oc类声明和实现:类声明:@interface NewClassName:ParentClassName {   实例变量;   ....} 方法的声明;...@end 类的实现: @implementation NewClassName 方法的实现{   //code}@end类的声明放在"类名 + .h"文件中。如:Person.h文件。类的声明主要由两部分组成:实例变量和方法。声明实例变量的格式:变量类型 变量名称。如:int age;实例变量:实例变量额可以使用oc中任何一种数据类型(包括基本类型和指针类型)在声明实例变量的时候不能初始化,系统会默认初始化。实例变量的默认作用域是整个类。Boolean 类型默认是false,所有指针类型默认是nil。oc方法声明:-(void) method : (int) arguments;"-"表示实例方法,"+"表示类方法,返回类型为空,方法名为“method:”(冒号一定不能省略),最后这个方法的参数是一个整型的参数,arguments是参数的名称。oc中进行方法调用中传递参数时,遵循值传递的原则:基本数据类型传递的是数据值本身,指针类型传递的是对象的指针,而不是对象的本身。oc中方法的调用方式有两种:1.[类名或者对象名  方法名];2.对象名.方法名;实例:[ClassOrInstance method];[ClassOrInstance method:arg1];[ClassOrInstance method1:arg1 method2:arg2];[[ClassOrInstance method:arg1] otherMethod];//嵌套发送消息。 oc基本概念——指针:*oc语言中出基本类型之外的变量类型称为指针类型。*oc中的对象是通过指针对其操作的。如何在内存中区分类和对象?*类是静态的概念,存放在代码区*对象是alloc出来的,存放在堆区,类的每个实例变量在不同的对象中都有不同的值(静态变量除外)*方法也只是在被调用的时候,程序运行的时候才占用内存。/*声明了一个NSString类型的指针变量,但它并没有指向任何一个对象*/NSString *s; //-->nil/*使用alloc方法创建了一个NSString类型的对象,并用s指向它,以后可以通过s完成对其的操作。*/s = [[NSString alloc] initWithString @"Hello World"]; // s--> 堆内存地址(譬如:ox10000258)oc中对象的创建和使用:1.oc中对象通过指针来声明,如:ClassA    *object;2.oc中对象的创建,使用alloc来创建一个对象。编译器会给object对象分配一块可用的内存地址。然后要对对象进行初始化即调用init方法,这样这个对象才可以使用。如:Person *person = [Person alloc];person = [person init];同一类的每个对象有不同的实例变量的存储空间。同一类的每个对象共享该类的方法。方法嵌套的形式来调用,如:ClassA *object = [[ClassA alloc] init];对象的初始化:*对象必须先创建,然后初始化,才能使用。*NSObject *object = [[NSObject alloc] init]; 首先为对象分配内存地址,为初始化做准备。初始化是对象创建过程中将新分配的对象的状态设置为合理的初始值,使之处于可用状态的阶段。通过约定,我们要求初始方法以init开头,并且在成功完成初始化之后,返回一个动态类型对象(id),如果失败则返回nil,初始方法可以包含一个或多个参数用于指定初始值。如下所示:* -(id) initWithArgument:(int) arg;* -(id) initWithArgument1:(int) arg1 xxWithArgument2:(int) arg2;初始化方法的实现:在init方法中,若要父类完成所需的一次性初始化,需要调用[super init].init方法返回的值(id型数据),描述了被初始化的对象。将[super init] 的结果赋值给self是oc的标准惯例,这么做为了防止父类在初始化过程中返回的对象不同于原先创建的对象。在一个类里面,具有最完整的初始化参数的初始化方法通常就是指定初始化方法,子类的初始化方法必须调用父类的指定初始化方法,通过向super发送相应的消息初始化父类。相反,它们将调用参数比自己多的其他初始化方法(通过向self发送消息)。并为自身没有的参数提供初始值,在此调用序列中,最终将会调用到指定初始化方法,完成整个初始化过程。当没有指定初始化方法的时候,编译器会为类自动添加init方法,如果有,编译器就不再添加。Person *person = nil;person = [[Person alloc] init];命名规则:*类名首字母大写。*变量名和方法名首字母小写。*使用驼峰标示。

来自【无限互联】iOS开发视频教程 3.3 类的声明和创建内存分析2(0)

oc中的方法特点:1.两个方法是否相同,与参数类型和返回值类型无关,即不可以重载。self  和 super:1.self 指的是类对象本身。2.super是父类对象本身。3.self用来调用本类对象的方法4.super调用父类的方法什么是真相?*self是类的隐藏的参数,指向当前调用方法的类,另一个隐藏参数是_cmd,代表当前类方法的selector。*super并不是隐藏的参数,它只是一个“编译器指示符”。它和self指向的是相同的消息接受者。*当使用self调用方法时,会从当前类的方法列表开始找,如果没有,就从父类中再找,而使用super时,则从父类的方法列表中开始找,然后调用父类的这个方法。@class 和 #import区别:imort 会包含这个类的所有信息,包括实体变量和方法,而@class 只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面再告诉你。在头文件中,一般只需要知道被引用的类的名称就可以了。不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class 来声明这个名称是类的名称。而在实现类里面,因为会用到这个引用类内部的实体变量和方法,所以需要使用#import 来包含这个被引用类的头文件。如果有循环依赖关系,如:A->B,B->A这样的相互依赖关系。如果使用#import 来相互包含,那么就会出现编译错误,如果使用@class 在两个类的头文件中相互声明,则不会有编译器错误出现。所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的,在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还需#import。 

来自【无限互联】iOS开发视频教程 3.4 property属性和点语法(0)

设置器和访问器:类似Java中的setter和getter,因为oc中get有着特殊含义,所以get方法之前不用get开头。在.h文件中使用关键字“@property”,在.m文件中使用"@synthesize"。例如:@interface Person : NSObject{  int myNumber; //实例变量 }@property(nonatomic) int myNumber;@end在实现文件中:@implementation Person@synthesize myNumber;@end就相当于写的setter和getter方法。在@property()括号中,可以填写的属性:readwrite : 默认readonly : 只读,没有set方法assign : 默认,引用计数不增加retain :引用计数增加1原子性:atomic默认非原子性:nonatomicatomic是oc中的一种线程保护计数,是防止在未完成的时候,被另一个线程使用,造成数据错误。点语法:只有在属性含有property属性的时候才能使用点语法(xCode 4.0之前),点语法的使用类似java中的点语法。static关键字:类体内的全局变量声明:static int gCount = 0;  

来自iPhone开发OC变量和基本数据类型2(0)

oc数据类型:一.基本数据类型    1.数值型:      整数类型(int),浮点型(float,                                            double)    2.字符型(char)    3.布尔型    4.空类型(void) 二、指针数据数据类型     1.类(class)     2.idoc中默认的浮点类型是double。char型数据:表示通常意义上的字符,格式化说明用 %c 表示。'\n',oc编译器把这个当做单个字符。unsigned char 值域范围:0~255oc字符采用unicode编码。逻辑型:BooleanBoolean 类型指的是用于存储真值和假值的变量,一般用于程序流程的控制。Boolean类型数据允许取值true或false,也可以是0或非0整数代替true和false,这点和java语言不同。实例:Boolean flag = true;       if(flag){        NSLog(@"Hello iPhone");       }限定词:long int : 声明变量xx为long 的整型变量,格式化符为 %li,如:long int a;long long int:声明变量xx为long long 的整型变量,格式化符为 %lli,如:long long int b;long double:跟int基本相同unsigned int :声明无符号的整型变量,如:unsigned int c;signed int :声明有符号的整型变量,如:signed int d;void 类型:告诉编译器没有任何范围类型的值,不能像其他数据类型一样来声明变量,例如:void i = 10;//错误void 通常与方法一起搭配使用,比如:-(void) test {   //code}id类型:是oc中独有的数据类型,它可以存储任何类型的对象,从某种意义上说,它就是一般的对象类型。将number声明为id类型的变量,如:id number;格式化说明符:%p