学习笔记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:@””];

 

 

 

 

     


[core Java学习笔记][第一二三章基本语法]

基本语法1 Java 简单的类型1.1 一些常量 正无穷大 Double.POSITVE_INFINITY 负无穷大 Double.NEGATIVE_INFINITY 不存在 Double.NaN 1...
  • zy691357966
  • zy691357966
  • 2016年04月02日 16:48
  • 424

Neo4j学习手册--2.2.1节Cypher基本语法学习笔记

2.2.1 Patterns模式 一、Node syntax 节点语法 () (matrix) (:Movie) (matrix:Movie) (mat...
  • fygdj0527
  • fygdj0527
  • 2016年11月24日 20:56
  • 1218

extjs学习笔记(基本语法实例代码)

//链接 function showUrl(value){   return ""+value+""; } //性别区分(CSS样式添加) function  showSex(value){...
  • fm19901229
  • fm19901229
  • 2012年10月25日 15:24
  • 4137

Java基本语法之构造方法

干嘛要弄这么个特殊的方法呢?官方的说法是为了保证类字段(数据成员或属性)的初始化。可以在构造方法内部对类的属性变量赋值,保证它们在被使用之前已经被恰当的初始化。 但是,初始化类字段完全可以使用任意一个...
  • u012668018
  • u012668018
  • 2017年02月09日 11:38
  • 290

java 构造方法和一般方法的区别

构造方法 特点: 1.方法名称和类名相同 2.不用定义返回值类型 3.不可以写return语句 作用: 给对象初始化 构造方法的细节: 当一个类中没有定义构造函数时,系统会默认添加一个无参的构造方...
  • Joakim_Zhou
  • Joakim_Zhou
  • 2015年02月28日 09:29
  • 11279

方法,构造方法,抽象方法的区别

1.方法,public或private等修饰,有返回值,无返回值用void表示,方法名(){}; 例如public void method(){} public void method(int i)...
  • zhang493397949
  • zhang493397949
  • 2017年08月01日 10:50
  • 212

学习笔记1—C语言的基本语法

1 C语言的程序构成方式   1)c语言程序由函数构成,每个函数可以实现一个或多个功能。 2)一个正规程序可以有多个函数,但是有且只有一个主函数。 3)函数只有在被调用的时候才执行,主函数由系统调用执...
  • ww231147
  • ww231147
  • 2015年11月14日 18:11
  • 3581

jQuery基本语法和选择器

jQuery 一、jQuery介绍 1、JS类库 l  JavaScript 库封装了很多预定义的对象和实用函数。能帮助使用者建立有高难度交互客户端页面, 并且兼容各大浏览器。 2、当前流行的Ja...
  • CSDN_GIA
  • CSDN_GIA
  • 2017年02月02日 14:49
  • 381

Java中构造方法、实例方法、类方法的区别

1. 构造方法        构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。必须满足以下的语法规则:   方法名与类名相同;不要返回类型(例如return、void等);不能被s...
  • hellohm_ndsc
  • hellohm_ndsc
  • 2014年12月17日 10:41
  • 6243

构造方法和普通方法有什么区别

与一般方法相比,构造方法的特点是:   1 、构造函数的名称总是和它的类名一致。 2 、构造函数没有返回值, 即不可以为 它指定任何类型的返回值,包括 void..3 、在构造函数的第一条语句中,可以...
  • mzd8341
  • mzd8341
  • 2017年05月06日 17:08
  • 1921
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记11-OC基本语法和构造方法
举报原因:
原因补充:

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