文档章节

第04天OC语言(01):私有变量和私有方法

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

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

声明私有变量和私有方法

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

什么是变量,什么是方法


#####一、本章笔记

 一.
     写在.m里面的变量 和 方法
     可以称之为私有变量 和 私有方法
 二.
    如果只有方法的实现,没有方法的声明,那么该方法就是私有方法
    在OC中没有真正的私有方法, 因为OC是消息机制
 三.强制调用 一个类没有公开的<私有方法>
    方式1
     id pp = [Person new];
     [pp test];
    方式2
    [p performSelector:@selector(test)];

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

#pragma mark 01-私有变量和私有方法
#pragma mark 概念
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
    Person *p = [Person new];
    // 无论使用 什么变量修饰符 修饰成员变量, 我们都可以在其他类中 看到这个变量
    // 只不过 有的修饰符 修饰的变量 我们不能操作而已
//    p->_age;
//    p->_height;
//    p->_name;
//    p->_weight;
    // [p test]; // No visible @interface for 'Person' declares the selector 'test'
    
#warning 强制调用 一个类没有公开的<私有方法>
//    id pp = [Person new];
//    [pp test];
    
    [p performSelector:@selector(test)];
    return 0;
}

######Person

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

@interface Person : NSObject
{
    @public
    int _age;
    @protected
    double _height;
    @private
    NSString *_name;
    @package
    double _weight;
}
// 如果只有方法的实现,没有方法的声明,那么该方法就是私有方法
// 在OC中没有真正的私有方法, 因为OC是消息机制
//- (void)test;
@end
>>>.m
#import "Person.h"

@implementation Person
{
    // 实例变量(成员变量) 既可以在@interface中定义, 也可以在@implementation中定义
    // 写在implementtation中的成员变量, 默认就是私有的变量, 并且 和 利用@private修饰的不太一样,在@implementation中定义的成员变量 在其它类中无法查看,也无法访问
    
    // 在@implementtation中定义的私有变量 只能在本类中访问
    @public
    double _score;
}

- (void)test
{
    NSLog(@"score %f",_score);
}
@end

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
私信 提问
self.name&&&&_name一样&&&零碎知识点

不一样的 1.self.name 是一个方法 是setter或者getter方法 2.self.name 实现的时候考虑内存管理 3.kvo可以监听到 name只是一个普通的变量而已 --------------------------------------------...

走向未来
2015/10/24
29
0
OC学习篇之---Foundation框架中的NSObject对象

前一篇文章讲到了OC中的代理模式:http://blog.csdn.net/jiangwei0910410003/article/details/41777627,而且前几篇文章就介绍了OC中的类相关知识,从这篇文章开始我们开始介绍Foundation框架...

jiangwei0910410003
2014/12/07
0
0
程序员面试闪充 -- KVC&KVO

一、键值编码KVC kvc&kvo视频讲解 1、介绍 由于oc的语言特性,使得开发者根本不必进行任何操作就可以进行属性的动态读写,这种方式就是Key Value Coding(简称KVC)。 KVC的操作方法由NSKey...

阡陌有客
2018/03/20
0
0
【原】iOS动态性(二):运行时runtime初探(强制获取并修改私有变量,强制增加及修改私有方法等

OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法。利用runtime机制让我们可以在程序运行时动态修改类、对象中的所有属性、方法,就算是私有方法以及私有...

北方人在上海
2016/03/09
27
0
iOS成员属性和成员变量的区别

一、@property 和@synthesizer 在objective-c 1.0中,我们为interface同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 在o...

朝雨晚风
2016/08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面向对象接口多态

第3天 面向对象 今日内容介绍  接口  多态  笔记本案例 今日学习目标  写出定义接口的格式  写出实现接口的格式  说出接口中成员的特点  接口和抽象类的区别  能够说出使用多...

stars永恒
10分钟前
1
0
摄像头基础介绍

一、摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中...

天王盖地虎626
11分钟前
1
0
浅谈一致性Hash原理及应用

在讲一致性Hash之前我们先来讨论一个问题。 问题:现在有亿级用户,每日产生千万级订单,如何将订单进行分片分表? 小A:我们可以按照手机号的尾数进行分片,同一个尾数的手机号写入同一片/...

Java干货分享
33分钟前
2
0
React SSR样式及SEO的实践

前一篇主要记录了一下SSR配置以及结合Redux的使用。这里简单说一下React SSR中样式处理和更优雅的SEO SSR样式 在React客户端渲染,添加样式很容易。写一个css样式文件,在对应组件中引用。标...

前端小攻略
39分钟前
5
0
华为手机太猛!余承东吹的牛今天都实现了

华为是世界上少有的在2B和2C领域同时取得成功公司。如今,华为消费者业务的营收,已经在华为总营收中占据“半壁江山”。 12月27日,华为董事长郭平在新年致辞中披露,预计2018年华为预计实现...

linux-tao
50分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部