- 不要等到明天,明天太遙遠,今天就行動。
須讀:看完該文章你能做什么?
聲明私有變量和私有方法
學習前:你必須會什么?(在這里我已經默認你具備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