Objective-C响应方法和构造方法

1.响应方法

Bool isInstace = [p respondsTosesector:@selector(run)];

// 没有参数

-(id) performSelector:selector(应用selector指定的方法) NSObject的方法

// 一个参数

-(id) performSelector:selector withObject:object(应用selector指定的方法,传递参数 object)

// 二个参数

-(id) performSelector:selector withObject:object1 withObject:object2(应用selector指 定的方法,传递参数object1和object2)

2. 构造方法

创建对象:Person *p=[Person new];

new方法内部做了3件事情:

(1)使用alloc方法来分配存储空间(返回分配的对象);

(2)使用init方法来对象进行初始化。

(3)返回对象的内存首地址。

可以把new方法拆开如下:

(1).调用类方法+alloc分配存储空间,返回未经初始化的对象

Person *p1=[Person alloc];

(2).调用对象方法-init进行初始化,返回对象本身

Person *p2=[p1 init];

(3).以上两个过程整合为一句:

Person *p=[[Person alloc] init];

(1)init方法就是构造方法,是用来初始化对象的方法,称为构造初始化。

(2) alloc

向某个类发送alloc消息的结果 ,为该类分配内存(对象的内存地址已经有了),以存放该类的全部实例变量 。

注意

一个刚刚分配的对象并不能立即使用 ,

需要先初始化该对象,然后才能使用它 ,

但由于未进行初始化, 随后可能出现一些不可预测的行为.

重写构造方法:

1. [super init]的作用:先调用父类的初始化方法,对从父类继承过来的成员变量进行初始化。初始化完了之后,返回我当前的对象指针。

2. 重写构造方法注意事项:

构造方法使用注意

(1)子类拥有的成员变量包括自己的成员变量以及从父类继承而来的成员变量,在重写构造方法的时候 应该首先对从父类继承而来的成员变量先进行初始化。

(2)原则:先初始化父类的,再初始化子类的。

(3)重写构造方法的目的:为了让对象方法一创建出来,成员变量就会有一些固定的值。

(4)注意点:先调用父类的构造方法[super init]; 再进行子类内部成员变量的初始化。

3.构造方法应用场景:

如果对象中的一些属性需要在初始化的时候就需要有值, 可以使用构造方法来完成.

自定义构造方法

1. 自定义构造方法的规范

(1)一定是对象方法,以减号开头

(2)返回值一般是id类型或者instancetype类型

(3)方法名一般以initWith开头

2. 自定义构造方法的实现

- (instancetype)init

{

self = [super init];

if (self) {

// 要初始化的成员变量.

}

return self;

}

3. 自定义构造方法的使用注意

(1). 自己做自己的事情

(2). 父类的方法交给父类的方法来处理,子类的方法处理子类自己独有的属性

自定义构造方法

1. 自定义构造方法的规范

(1)一定是对象方法,以减号开头

(2)返回值一般是id类型或者instancetype类型

(3)方法名一般以initWith开头

2. 自定义构造方法的实现

- (instancetype)initWithName:(NSString *)name andAge:(int)age;

{

self = [super init];

if (self) {

// 要初始化的成员变量.

_name = name;

_age = age;

}

return self;

}

3. 自定义构造方法的使用注意

(1). 自己做自己的事情

(2). 父类的方法交给父类的方法来处理,子类的方法处理子类自己独有的属性

4. 使用场景

如果对象被创建的时候, 需要对里面某些属性进行初始化(设置), 这个时候就可以使用构造方法

时间: 2024-12-27 19:33:27

Objective-C响应方法和构造方法的相关文章

1.28 Java基础总结 ①方法重载②构造方法

1.28 Java基础总结 ①方法重载②构造方法 一.方法的重载在同一个类中,方法名相同,形参列表不同访问修饰符.返回类型和是否重载无关:按顺序对应的形参列表类型不同即可 二.构造器在类创建一个实例时被调用,构造方法只能用new关键字调用目的:初始化实例,初始化类属性(0,0.0,null,false)无返回值,和类名一致,用来构造对象作用:为对象分配内存, 创建并初始化成员变量(通过类创建,所以可以在static方法中调用构造方法) 返回引用,引用.属性:引用.方法(所以无返回值) 三.构造方

iOS开发之oc--类与对象(2)-set/get方法及构造方法

面向对象的特征: 1)封装  2)继承 3)多态 知识点: (1)set/get方法(成员变量的封装) (2)构造方法 (3)self的使用 (4)对象方法和类方法 小知识点补充 (一)set/get方法 [set]:用形参给成员变量赋值 [get]:返回成员变量的值 代码示例 #import <Foundation/Foundation.h> // 声明 @interface Car : NSObject { //@public // 以后的成员变量最好不要写@public, // 因为@p

java事件响应方法汇总(容器类监听、监听器类、AbstractAction、反射)

Java图形用户界面中,处理事件时所必须的步骤是: 1.创建接受响应的组件(控件)2.实现相关事件监听接口3.注册事件源的动作监听器4.事件触发时的事件处理 相应的可以通过以下的集中方式来作出事件响应. [java] view plaincopyprint? <span style="font-size: 18px;">一.容器类监听 效果:单击窗体中的三个按钮,实现相应的相应时间. </span><pre class="java" n

Objective-C 【动态类型检测&amp;响应方法】

------------------------------------------- 动态类型检测 代码: #import <Foundation/Foundation.h> @interface Animal : NSObject -(void)run; -(void)abc; @end @implementation Animal -(void)run { NSLog(@"Animal run!"); } -(void)abc { NSLog(@"abc!&

使用setter方法和构造方法装配Bean

本篇就简单的说一下Bean的装配和AOP本篇的项目是在上一篇我的Spring学习记录(一) 中项目的基础上进行开发的 1. 使用setter方法和构造方法装配Bean 1.1 前期准备 使用setter方法注入依赖其实在上一篇中已经遇到过了主要通过property在bean中进行注入 <!--声明一个bean并且指定相应的类--> <bean name="dog" class="cn.lger.domain.Dog"> <propert

UI 指派初始化方法 视图控制器 button响应方法

1 #import "MainViewController.h" 2 3 @interface MainViewController () 4 // 延展 :管理类私有的属性和方法 5 @end 6 7 @implementation MainViewController 8 // 指派初始化方法 9 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 10 { 11 self

__del__ 析构方法 __init__ 构造方法

# ### __del__ 析构方法 __init__ 构造方法 ''' 触发时机:当对象被内存回收的时候自动触发[1.页面执行完毕回收所有变量 2.所有对象被del的时候] 功能:对象使用完毕后资源回收 参数:一个self接受对象 返回值:无 ''' class LangDog(): def __init__(self,name): self.name = name def eat(self,something): print("可爱的小狼{},喜欢吃{}".format(self.

UIResponder 类中的触摸事件响应方法

touchesBegan:withEvent:-当触摸事件处于"起步阶段"(starting phase),也就是用户刚开始触碰屏幕时,系统会调用这个方法. touchesMoved:withEvent:-当用户触摸屏幕并持续在屏幕上移动手指时,系统会调用这个方法. touchesEnded:withEvent:-当用户触摸屏幕的一根手指或所有手指都从屏幕上拿开时,触摸过程就结束了,而系统此时会调用这个方法.如果在用户移动手指的过程中程序做了一些处理,那么此时应该会执行相关的清理工作.

类的方法类型——构造方法

package com.hanqi; public class Phone { private String pinPai;//私用品牌 public String getPinPai() { return pinPai; // } private String haoma;//号码 public String getHaoma(){ return haoma; } private String colour;//颜色 public String getColour() { return col