文档章节

第03天OC语言(07):self注意点和应用场景

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

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

self的使用注意

#####学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)

什么是self,什么是类


#####一、本章笔记

 注意:
 self 会自动区分类方法 和 对象方法, 如果在类方法中 使用self调用对象方法,那么会直接报错
 > 不能在对象方法 或者 类方法中 利用self 调用 当前self 所在的方法(死循环)
 
 使用场景 :
 可以用于 在对象方法之间进行相互调用
 可以 用于 类方法之间进行相互调用
 
 可以用于区分成员变量 和 局部变量同名的情况

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

#pragma mark 07-self注意点和应用场景
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "IPhone.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
    [IPhone carameWithFlahlightStatus:kFlahlightStatusOpen];
//    NSLog(@"p = %p",p);
//    [p carameWithFlahlightStatus:kFlahlightStatusOpen];
    return 0;
}

######Iphone

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

typedef enum
{
    kFlahlightStatusOpen,
    kFlahlightStatusClose
}FlahlightStatus;

@interface IPhone : NSObject
{
    int cpu;
}
- (void)setCpu:(int)cpu;

+ (void)carameWithFlahlightStatus:(FlahlightStatus)status;
+ (void)openFlashlight;
+ (void)closeFlashlight;

@end
>>>.m
#import "IPhone.h"

@implementation IPhone
+ (void)carameWithFlahlightStatus:(FlahlightStatus)status
{
    if (status == kFlahlightStatusOpen)
    {
        [self openFlashlight];
    }
    else
    {
        [self closeFlashlight];
    }
    
    NSLog(@"拍照");
}

// 打开闪光灯
+ (void)openFlashlight
{
    NSLog(@"打开闪光灯");
//    NSLog(@"self = %p",self);
    [self openFlashlight]; // 会引发死循环

}
// 关闭闪光灯
+ (void)closeFlashlight
{
    NSLog(@"关闭闪光灯");

}

- (void)setCpu:(int)cpu
{
    self->cpu = cpu;
}

@end

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
Object-C基础-03-点语法

前言 在Java中,我们可以通过"对象名.成员变量名"来访问对象的公共成员变量,这个就称为"点语法"。比如: 1.在Student类的第2行定义了一个公共的成员变量age 1 public class Student {2 pub...

Corwien
2016/03/17
16
0
简述如何从Objective-C到Swift过渡

本篇文章简述了如何从Objective-C向Swift过渡。话不多说,开门见山。 注意:本文讨论的开发环境为Xcode 6 beta 2版本。 单一文件结构 VS 接口-实现 最值得一提的一大改动便是在Objective-C中...

牵着蜗牛去西藏
2014/11/04
170
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
JavaScript 30天每日效果图

JavaScript 30天每日效果图 在Github上看到了wesbos的一个Javascript30天挑战的repo,旨在使用纯JS来进行练习,不允许使用任何其他的库和框架,该挑战共30天,我会在这里复现这30天遇到的挑战...

黎跃春
2017/07/19
0
0
swift简介和语言特点

swift是苹果公司在2014年在WWDC上发布的全新编程语言 我们可以在Swift语法中看到Objective—C、JavaScript、C#、Python等语言的影子,它借鉴了这些语言的影子,同时具备编译型语言的高性能和...

我是华丽的笨笨
2016/03/10
60
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在Java中生成比特币钱包地址

让我们通过学习比特币(Bitcoin)如何实施该技术的各个方面来工作,好吗?该技术包括以下几个方面: 比特币地址bitcoin address是用来发送和接收比特币的。 交易transaction是比特币从一个地...

geek12345
24分钟前
3
0
面试必备Linux基础知识

学习Linux之前,我们先来简单的认识一下操作系统。 一 从认识操作系统开始 1.1 操作系统简介 我通过以下四点介绍什么操作系统: 操作系统(Operation System,简称OS)是管理计算机硬件与软件...

小小明童鞋
24分钟前
7
0
SpringBoot基础教程3-1-3 Quartz定时任务单点持久化

1 概述 实际项目中,复杂的定时任务都会结合持久化,动态改变定时任务状态,本文将介绍基于Quartz的定时任务单点持久化方式,通过RESTful风格,演示定时任务的CRUD,最后使用Swagger测试。 ...

Mkeeper
41分钟前
14
0
Android入门—文件目录解析

AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录。我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息。但是对于这个文件,我...

haoyuehong
44分钟前
8
0
IDEA中Maven打包时如何跳过测试

方法1:直接使用IDEA提供的方式 Maven命令栏的工具栏有下图中的图标,上面就写着 Skip Tests 按下图标后,如下图,test就不可用了 直接使用package命令即可。 方法2:自己编辑maven命令 进入...

karma123
57分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部