OC中的成员变量
2015-11-13 00:44
316 查看
//
// main.m
// 第一个OC类 访问成员变量的若干方法的解析
//
// Created by Caoxia on 15/11/10.
// Copyright © 2015年 Caoxia. All rights reserved.
//
#import <Foundation/Foundation.h>
/*使用_访问成员变量的注意点
一.使用 _成员变量名对成员变量进行访问
在方法中,可以使用 "_成员变量名"对本对象中的成员变量进行访问。
注意点:
1>成员变量必须是本对象中的成员变量
2>如果成员变量是从父类中继承而来,而且父类中的此成员变量被设置为@private时,不可以用这种方式。
3>可以与&取址符搭配使用
*/
//---------------------------------------------华丽的分割线-----------------------------------------------
@interface person :
NSObject
{
//只有简单的成员变量的声明,没有方法的声明
@private
int _age;
@protected //默认类型是protected
double _weight;
@public
double _height;
}
- (void)test;
@end
@implementation person
- (void)test
{
_age = 16;
NSLog(@"%i",_age);// 分界线里面是一个类,在本类中访问,无论是public,private,protected修饰都是可以访问的
_weight = 55.5;
NSLog(@"%f",_weight);//这里的访问方式是直接进行访问,没有实例化对象访问
_height = 178.5;
NSLog(@"%f",_height);
}
@end
@interface Mother :
NSObject
{
@public
int _age;
double _weight;
NSString *_name;
}
@end
@implementation Mother
- (void)say
{
_age = 18;
NSLog(@"%d,%f,%@",_age,_weight,_name);
//double类型用%f
}
@end
//---------------------------------------------华丽的分割线-----------------------------------------------
//注意,主函数和上面的Person类不是一个类,即使写在一个文件里也不是一个函数
int main(int argc,const
char * argv[]) {
@autoreleasepool {
// insert code here...
// NSLog(@"Hello, World!");
//NSLog(@"%d",_age); //成员变量必须创建一个对象以后才可以使用
person *p = [[personalloc]init];
// NSLog(@"%d",p->_age); //在没有赋值的时候,相当于是获取,初始化为0,所以打印结果为0
//
// person *p2 = [person new];
// p2->_age = 13; //给成员变量赋值,但是要区分于set方法,只有创建了对象才可以这样用
// NSLog(@"%d",p2->_age); //age是私有的,在别的类中不能访问
//总结,在这种情况下,只能用@public修饰才能访问,其它方式都不能访问
//NSLog(@"%d",p2.age); //这里是没有办法进行访问的,因为点语法的实质就是set方法(setter)和get方法(getter),\
有两种方式设置setter和getter,分别是1.自定义setter和getter,然后在里面写实现,\
另一种是使用@property,自动生成最简单的setter和getter,这一点会在后面提到.
Mother *mom = [Mothernew];
mom->_age =
13;
mom->_name =
@"腊梅";
mom->_weight =
55;
[mom say]; //打印结果 18,55.000000,腊梅,因为最后是调用say方法,say以后_age的值被更改了
//---------------------------------------------华丽的分割线-----------------------------------------------
//oc中类的本质就是一个结构体,所以实例化对象,然后使用指针指向,实际上就是一个结构体的指向
struct People
{
int age;
double weight;
char *name;
};
structPeople p1; //相当于定义了一个
struct People数据类型的变量
struct People *point = &p1; //定义一个指针指向这个变量的实际内存地址
(*point).age =
15;
(*point).weight =
65.5;
(*point).name =
"haha";
printf("%d,%f,%s",point->age,point->weight,point->name);
//---------------------------------------------华丽的分割线-----------------------------------------------
}
return 0;
}
// main.m
// 第一个OC类 访问成员变量的若干方法的解析
//
// Created by Caoxia on 15/11/10.
// Copyright © 2015年 Caoxia. All rights reserved.
//
#import <Foundation/Foundation.h>
/*使用_访问成员变量的注意点
一.使用 _成员变量名对成员变量进行访问
在方法中,可以使用 "_成员变量名"对本对象中的成员变量进行访问。
注意点:
1>成员变量必须是本对象中的成员变量
2>如果成员变量是从父类中继承而来,而且父类中的此成员变量被设置为@private时,不可以用这种方式。
3>可以与&取址符搭配使用
*/
//---------------------------------------------华丽的分割线-----------------------------------------------
@interface person :
NSObject
{
//只有简单的成员变量的声明,没有方法的声明
@private
int _age;
@protected //默认类型是protected
double _weight;
@public
double _height;
}
- (void)test;
@end
@implementation person
- (void)test
{
_age = 16;
NSLog(@"%i",_age);// 分界线里面是一个类,在本类中访问,无论是public,private,protected修饰都是可以访问的
_weight = 55.5;
NSLog(@"%f",_weight);//这里的访问方式是直接进行访问,没有实例化对象访问
_height = 178.5;
NSLog(@"%f",_height);
}
@end
@interface Mother :
NSObject
{
@public
int _age;
double _weight;
NSString *_name;
}
@end
@implementation Mother
- (void)say
{
_age = 18;
NSLog(@"%d,%f,%@",_age,_weight,_name);
//double类型用%f
}
@end
//---------------------------------------------华丽的分割线-----------------------------------------------
//注意,主函数和上面的Person类不是一个类,即使写在一个文件里也不是一个函数
int main(int argc,const
char * argv[]) {
@autoreleasepool {
// insert code here...
// NSLog(@"Hello, World!");
//NSLog(@"%d",_age); //成员变量必须创建一个对象以后才可以使用
person *p = [[personalloc]init];
// NSLog(@"%d",p->_age); //在没有赋值的时候,相当于是获取,初始化为0,所以打印结果为0
//
// person *p2 = [person new];
// p2->_age = 13; //给成员变量赋值,但是要区分于set方法,只有创建了对象才可以这样用
// NSLog(@"%d",p2->_age); //age是私有的,在别的类中不能访问
//总结,在这种情况下,只能用@public修饰才能访问,其它方式都不能访问
//NSLog(@"%d",p2.age); //这里是没有办法进行访问的,因为点语法的实质就是set方法(setter)和get方法(getter),\
有两种方式设置setter和getter,分别是1.自定义setter和getter,然后在里面写实现,\
另一种是使用@property,自动生成最简单的setter和getter,这一点会在后面提到.
Mother *mom = [Mothernew];
mom->_age =
13;
mom->_name =
@"腊梅";
mom->_weight =
55;
[mom say]; //打印结果 18,55.000000,腊梅,因为最后是调用say方法,say以后_age的值被更改了
//---------------------------------------------华丽的分割线-----------------------------------------------
//oc中类的本质就是一个结构体,所以实例化对象,然后使用指针指向,实际上就是一个结构体的指向
struct People
{
int age;
double weight;
char *name;
};
structPeople p1; //相当于定义了一个
struct People数据类型的变量
struct People *point = &p1; //定义一个指针指向这个变量的实际内存地址
(*point).age =
15;
(*point).weight =
65.5;
(*point).name =
"haha";
printf("%d,%f,%s",point->age,point->weight,point->name);
//---------------------------------------------华丽的分割线-----------------------------------------------
}
return 0;
}
相关文章推荐
- C#不同类型的成员变量(字段)的默认值介绍
- Objective-C的内省(Introspection)用法小结
- 详解C++编程中类的成员变量和成员函数的相关知识
- C++空类及没有成员变量的类的大小实例分析
- C#中属性和成员变量的区别说明
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- Objective-C中NSNumber与NSDictionary的用法简介
- Objective-C中NSLog输出格式大全
- 全面解析Objective-C中的block代码块的使用
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- 以实例讲解Objective-C中的KVO与KVC机制
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- vm安装mac os x 10.7 lion