学习笔记11-OC基本语法和构造方法

原创 2015年11月21日 14:55:27

1 OC传统get和set方法

2点语法

       只能使用点语法设置成员变量(get和set方法),不能访问其他方法。

       Person  *p = [Person new];

       赋值:p.name=“xiaoming”;  //(xcode优化)访问的是成员变量set方法。

       取值:int  a =p.age;           // 访问的是成员变量get方法。

注意

1) 在set和get方法中不能使用 self.age=age 设置_age 值,会不断调用自己造成死循环。和JAVA中的this指针有区别 java 中可以使用this.age=age;

2) 点语法的本质是set和get方法的调用不是访问成员变量。

3 @property

       是编译器指令,告诉编译器声明属性的访问器(声明get和set方法)。

使用

       @property 类型名 方法名(规范写法下,成员变量名去掉下划线)。

              @propertyint  age; //相当于_age 的set和get方法的声明。

       注意

1) 只能写在声明的地方 @interface 和@end之间。

2) 类型一致可以写在一起 @property int  age ,weight。

 

@property 的增强使用

       xcode 4.4 之后 只需要声明使用@property 声明 Xcode会自动实现。

       @property int  age  ;//声明的是_age的set和get方法 实现的也是_age的set和get方法。如果没有_age 会自动生成。可以被子类继承。

 

4 @synthesize

       是编译器指令,告诉编译器实现属性的访问器(实现get和set方法)。

       使用

       @synthesize  age ; //相当于实现了 声明的方法为age的get和set方法。

                     但是get和set方法操作的不是_age这个实例变量

注意

方法名必须先@property中声明。

       多个实例变量可以放在一行建议只把类型一致的写在一起。

@synthesize  age weight  name;

              指定实例变量赋值

              @synthesize  age=_age ; //默认操的是下划线的_age。

5  @propertyset和get方法的重写

              和手动实现set和get方法一样。

6 动态类型和静态类型

       动态类型:程序执行的时候才知道所属类型。

       静态类型;将一个变量定义为特定类的对象。编译的时候就知道变量的类型。

7  id类型

        NSObject 访问子类的方法。

        NSObject是所有类的基类。NSObject指针可以指向任何类对象。

        id是通用的对象类型,可以存储任何类对象,万能指针。

        使用

                     id  obj  ;

                     obj= [Person  new];

                     此时 obj 就可以调用Person  里的方法了。

                    

              NSObejct 编译时检查 调用子类方法时需要 强制转换

              id         运行时检查 不需要强制转换。

              id和insanetype

              都可以作为方法的返回类型,

              insanetype可以返回和方法类型相同类型的对象 id只能返回未知类型对象

              insanetype只能作为返回值  id还可以作为参数。

8 动态类型检测

       动态绑定;一个对象是否调用指定的方法不是编译器决定而是运行时 决定。

       动态检测:检测一个实例对象是否是某类或者某类子类的实例。

      

              BOOL is=[ ani isKingOfClass :[Animalclass]];// 

              is:返回值

              ani:实例对象

              isKingOfClass:检测方法

              [Animalclass]: 类对象

isKingOfClass 检测 ani 是否是Animal类或者子类的实例对象

isMemberOfClass  检测 ani 是否是Animal类不包括子类的实例对象

isSubClassOFClass 检测类对象是否继承类对象

       BOOL is= [Dog  isSubClassOFClass :[Animalclass]];

 

              判断对象能否响应指定方法

                     SEL  sel =@selectot(eat);  //包装eat方法

                     BOOL isRsp=[ ani respondsToSelectot:sel];//判断ani 是否可以响应eat方法

                     BOOL  isRsp=[ ani respondsToSelectot:@selector(eat)];

9 构造方法的概念

       用来初始化对象的方法。

       重写构造方法为了让对象创造出来的时候就有某些初值。构造方法是对象方法。

      

       new= alloc+init;

alloc:为对象创建空间,返回未初始化的对象

init:调用对象方法进行初始化返回对象本身。

重写 init方法

-      instancetype  init{

self=[super init] ;     //先让父类做完自己初始化。

if(self){                //判断父类是否初始化成功

       子类初始化代码;//子类成员变量赋初值

}

return self;                //返回调用者自身。

}

自定义构造方法

1) 一定是对象方法

2) 返回值一般为id类型

3) 方法名以initWith开头。

类比 NSString *str=[ NSString stringWithFormat:@””];

 

 

 

 

     


相关文章推荐

OC学习笔记之init构造方法

构造方法:用来初始化对象的方法,是个对象方法,-开头 重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值  重写构造方法的注意点 1.先调用父类的构造方法([super i...

OC学习笔记之OC类自定义构造方法

OC的自定义构造方法     一、构造方法续:自定义构造         上一篇笔记小桥讲到了OC类的构造方法,这里先复习一下,下面是一个Person类,有姓名和年龄两个成员变量: // // ...

黑马程序员--OC自学笔记---05点语法、@property、@synthesize、动态类型、id类型、响应方法、构造方法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------   1.   点语法介绍和使用 1)        点语法是xcode的特性,...

OC基础语法学习4:自定义构造方法和description方法

一、构造方法构造方法默认是:init-(id)init { if(self = [super init]) { //初始化成员变量 } return se...

黑马程序员——OC核心语法2之构造方法

0.概念     定义:用来初始化对象的方法,是个对象方法。 - 开头   目的:为了让对象创建出来,成员变量就拥有固定值(默认是空,0)   注意点:(1)先调用父类的构造方法(eg:[sup...

黑马程序员_OC点语法 id 构造方法复习

一 . id是万能指针等于 NSObject *,能指向和操作任何OC对象 id d = [person new]; d.age=10; 二. 构造方法:用来初始化对象的...

OC中点语法、id类型和构造方法

点语法: OC中点语法的本质是方法调用,而不是直接访问成员变量 例如: p.age = 10; //等价于[p setAge:10]; int a = p.age; //等价于[p ...

黑马程序员-OC语言核心语法(2)构造方法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • wlwl363
  • wlwl363
  • 2015年03月04日 22:08
  • 253

11、黑马程序员-OC语言构造方法

一、构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法来分配存储空间(...
  • zwcshy
  • zwcshy
  • 2014年11月30日 14:18
  • 299

黑马程序员_iOS开发之OC之面向对象之id语法、构造方法、@category分类、类本质、description方法和SEL数据类型

1、id语法
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记11-OC基本语法和构造方法
举报原因:
原因补充:

(最多只允许输入30个字)