文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/14 09:23
字数 535
阅读 1
收藏 0
点赞 0
评论 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
iOS成员属性和成员变量的区别

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

朝雨晚风
2016/08/12
0
0
【原】iOS动态性(二):运行时runtime初探(强制获取并修改私有变量,强制增加及修改私有方法等

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

北方人在上海
2016/03/09
27
0
OC学习篇之---Foundation框架中的NSObject对象

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

jiangwei0910410003
2014/12/07
0
0
OC-基础总结(一)

OC基础总结 重新回过头看这些基础知识,对许多知识点都有新的认识,拥有坚实的基础才能更快的成长。 #improt OC程序的源文件的后缀名是.m m代表message表示消息机制。main 仍然是OC程序的入口...

xx_cc
2017/04/22
0
0
是时候正式进入 Swift开发了

Swift从14年发布到现在已经迎来了3.0的版本, 不得不说作为苹果公司推出的新语言, swift的未来是毋庸置疑的. 一种新的编程语言, 在快速发展的前期,变化是很大的, 这个勉强可以作为我们之前暂不...

Sunxb
2016/11/02
0
0
Objective-C中runtime机制的应用

Objective-C中runtime机制的应用 一、初识runtime Objective-C是一种动态语言,所谓动态语言,是在程序执行时动态的确定变量类型,执行变量类型对应的方法的。因此,在Object-C中常用字符串映...

珲少
2015/08/07
0
1
OC中Category的注意点

第一个:分类只能添加方法,不能添加属性(成员变量); 第二个:分类中的property只会生成setter/getter的申明,不会生成实现和私有变量; 第三个:分类可以访问原来类中的成员变量 第四个:当...

AppleDream
2016/04/02
33
1
OC学习篇之---单例模式

在之前的一片文章中介绍了对象的拷贝相关知识:http://blog.csdn.net/jiangwei0910410003/article/details/41926531,今天我们来看一下OC中的单例模式,单例模式在设计模式中用的可能是最多的...

jiangwei0910410003
2014/12/14
0
0
iOS 面试全方位剖析 -- OC语言特性篇 (一)

分类 & 关联对象 & 扩展 & 代理 (一) 通知 KVO KVC 属性关键字. (二) 分类 你用分类都做了哪些事 ? 特点 讲特点是为了能更好的和扩展区分开来 分类中都可以添加哪些内容 分类的实现机制 同一...

PetitBread
05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

看看 LinkedList Java 9

终于迎来了 LinkedList 类,实现的接口就有点多了 Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E>。LinkedList是一个实现了List接口和Deque接口的双端链......

woshixin
12分钟前
0
0
算法 - 冒泡排序 C++

大家好,我是ChungZH。今天我给大家讲一下最基础的排序算法:冒泡排序(BubbleSort)。 冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大(可以相反),就交换他们两个。 对每...

ChungZH
15分钟前
0
0
jquery ajax request payload和fromData请求方式

请求头的不同 fromData var data = { name : 'yiifaa'};// 提交数据$.ajax('app/', { method:'POST', // 将数据编码为表单模式 contentType:'application/x-ww...

lsy999
17分钟前
0
0
阿里P7架构师,带你点亮程序员蜕变之路

前言: Java是现阶段中国互联网公司中,覆盖度最广的研发语言。 掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。 有不少朋友问,成为Java架...

Java大蜗牛
19分钟前
1
0
Ecstore 在没有后台管理界面(维护)的情况如何更新表的字段

window 系统: 切换到:app\base 目录下: C:\Users\qimh>d: D:\>cd D:\WWW\huaqh\app\base 执行:D:\WWW\huaqh\app\base>cmd update linux 系统: 1># cd /alidata/www.novoeshop.com/app/......

qimh
23分钟前
0
0
设计模式-策略模式

策略模式 解释 对工厂模式的再次封装,使用参数控制上下文信息(将工厂返回的实例赋值给context field) 不会返回bean实例,只是设置对应的条件 调用context的方法(调用field的方法) 用户只...

郭里奥
26分钟前
0
0
python使用有序字典

python自带的collections包中有很多有用的数据结构可供使用,其中有个叫OrderedDict类,它可以在使用的时候记录元素插入顺序,在遍历使用的时候就可以按照原顺序遍历。 a = {"a":1,"b"...

芝麻糖人
56分钟前
0
0
RestTemplate HttpMessageConverter

RestTemplate 微信接口 text/plain HttpMessageConverter

微小宝
56分钟前
0
0
mysql视图/存储过程/函数/事件/触发器

--语法参考:https://dev.mysql.com/doc/ (当前用的是5.6) https://dev.mysql.com/doc/refman/5.6/en/sql-syntax-data-manipulation.html --视图 CREATE VIEW test.v AS SELECT * FROM t;......

坦途abc
58分钟前
0
0
MySQL参数优化案例

环境介绍 硬件配置 cpu核心数 内存大小 磁盘空间 16核 256G 3T 软件环境 操作系统版本 mysql版本 表数目 单表行数 centos-7.4 mysql-5.7.22 128张表 2kw行 优化层级与指导思想 优化层级 MySQ...

小致dad
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部