- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
声明私有变量和私有方法
学习前:你必须会什么?(在这里我已经默认你具备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