文档章节

第04天OC语言(08):构造方法基本概念

lyh2017iOS
 lyh2017iOS
发布于 2017/07/15 09:44
字数 884
阅读 2
收藏 0
  • 不要等到明天,明天太遥远,今天就行动。

#####须读:看完该文章你能做什么?

重写init构造方法

#####学习前:你必须会什么?

什么是方法 OC中的方法也分为两种 : 类方法 和 对象方法 OC中的类方法用 +表示, OC中的对象方法 用-表示

 OC的方法 :
 没有返回值没有参数的  - (void)text1;
 没有返回值参数的     - (void)text2WithNumber:(int)number;
 有返回值没有参数的   - (int)text3WithNumber;
 有返回值有参数的     - (int)text2WithNumber:(int)number andNumber2:(int)number2; // 多个参数


#####一、本章笔记

 一、
    在OC中init开头的方法,我们称之为构造方法
    构造方法的用途:用于初始化一个对象,让某个对象 已创建出来就拥有某些属性和值
 二、
     重写init方法,在init方法中初始化成员变量
     注意 : 重写init方法 必须 按照苹果规定的格式重写,如果不按照规定 会引发一些未知的错误
     1. 必须先初始化 父类, 在初始化子类
     2. 必须先判断父类 是否 初始化成功, 只有父类 初始化成功 才能继续 初始化子类
     3. 返回当前对象的地址

#####二、code ######main.m

#pragma mark 08-构造方法基本概念
#pragma mark 概念
/*
 一、
    在OC中init开头的方法,我们称之为构造方法
    构造方法的用途:用于初始化一个对象,让某个对象 已创建出来就拥有某些属性和值
 二、
     重写init方法,在init方法中初始化成员变量
     注意 : 重写init方法 必须 按照苹果规定的格式重写,如果不按照规定 会引发一些未知的错误
     1. 必须先初始化 父类, 在初始化子类
     2. 必须先判断父类 是否 初始化成功, 只有父类 初始化成功 才能继续 初始化子类
     3. 返回当前对象的地址
 */
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类

#import "Person.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
    Person *p = [[Person alloc]init];
    NSLog(@"age = %i",p.age);
    
    Person *p2 = [[Person alloc]init];
    NSLog(@"age = %i",p2.age);

    Person *p3 = [[Person alloc]init];
    NSLog(@"age = %i",p3.age);

    return 0;
}

######Person

>>>.h
#import <Foundation/Foundation.h>

@interface Person : NSObject
@property int age;
@end
>>>.m
#import "Person.h"

@implementation Person

/* 重写init方法,在init方法中初始化成员变量
 注意 : 重写init方法 必须 按照苹果规定的格式重写,如果不按照规定 会引发一些未知的错误
 1. 必须先初始化 父类, 在初始化子类
 2. 必须先判断父类 是否 初始化成功, 只有父类 初始化成功 才能继续 初始化子类
 3. 返回当前对象的地址
*/

#pragma mark 初始化 方式1
/*
- (instancetype)init
{
    // 1.初始化父类
    // 只要父类初始化成功, 就会返回对应的地址,如果初始化失败,就会返回nil
    // nil == 0 == 假 == 没有初始化成功
    self = [super init];
    // 2.判断父类 是否初始化成功
    if (self !=nil) {
        // 3.初始化子类(以后只有初始化子类 不固定 其他都是固定的)
        // 设置属性的值
        _age = 6;
    }
    
    // 4.返回地址
    return self;
}
*/
#pragma mark 初始化 方式2
/*
- (instancetype)init
{
    self = [super init];
    if(self)
    {
        // 初始化子类
        _age = 6;
    }
    return self;
}
*/

#pragma mark 初始化 方式3
- (instancetype)init
{
    // 注意 : 不要把 = 号 写为 ==
    // 一定要将 [super init]的返回值 赋值给self 
    if(self = [super init])
    {
        // 初始化子类
        _age = 6;
    }
    return self;
}

@end

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
Object-C基础-04-自定义构造方法和description方法

知识回顾 在第5讲中已经介绍了如何定义类和创建并初始化对象,比如有Student这个类 1.Student.h #import <Foundation/Foundation.h> @interface Student : NSObject { int _age;}- (void)se......

Corwien
2016/03/17
23
0
Swift4.0基础知识回顾

简单介绍一下Swift Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序,Swift语言让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量更多了解Swift可以去《The...

博行天下
2017/12/06
0
0
从 OC 到 Swift 的快速入门与专业实践

只会介绍与 OC 有明显区别的地方,不会介绍 OC 中没有的,比如元组。当前总结也只是蜻蜓点水而已,但是有 OC 的基础,看这些已经足够。 一、数据 Swift 是类型安全的语言: Swift 必须明确数...

CoderHG
08/04
0
0
iOS 编写高质量Objective-C代码(二)

《编写高质量OC代码》已经顺利完成一二三四篇! 附上链接: iOS 编写高质量Objective-C代码(一) iOS 编写高质量Objective-C代码(二) iOS 编写高质量Objective-C代码(三) iOS 编写高质量...

MrLiuQ
08/13
0
0
Native code support (Native Code(C和C++)支持)

1. WP 8和Win 8之间共享native代码 通过 Windows 运行时组件,可以在 Windows 应用商店和 Windows Phone 应用程序之间共享Native coad。由于windows phone 8和Windows 8没有共享所有的Windo...

失足处男的倒霉孩子
2013/12/26
779
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
0
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
14
0
学习设计模式——观察者模式

1. 认识观察者模式 1. 定义:定义对象之间一种一对多的依赖关系,当一个对象状态发生变化时,依赖该对象的其他对象都会得到通知并进行相应的变化。 2. 组织结构: Subject:目标对象类,会被...

江左煤郎
昨天
0
0
emoji

前言:随着iOS系统版本的升级,对原生emoji表情的支持也越来越丰富。emoji表情是unicode码中为表情符号设计的一组编码,当然,还有独立于unicode的另一套编码SBUnicode,在OS系统中,这两种编...

HeroHY
昨天
2
0
rabbitmq学习(二)

生产者消费者初级案列 ChannelUtils package com.hensemlee.rabbitmq;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.Connecti......

hensemlee
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部