黑马程序员技术交流社区
标题:
对点语法的一些认识
[打印本页]
作者:
Perhaps
时间:
2015-1-16 12:40
标题:
对点语法的一些认识
点语法和属性@property
#import <Foundation/Foundation.h>
@interface Dog : NSObject
{
NSString *_name;
int _age;
double _height;
}
//解释;
// NSString * 意味着设置方法的参数是NSString *
// 那么意味着设置方法的名字是setName
// 获取方法的方法名是name
// 相当于声明了设置方法和获取方法
//细节:只写property,没有写对应的实例变量
// 默认生成的实例是带有下划线的
// 例如:property是name ,生成的实例变量_name
//****这时候权限变成私有的
//copy 参数
@property (copy)NSString * name;
@property int age;
@property double height;
//属性特性 可替换以下两句
//-(void)setAge:(int)age;
//-(int)age;
//-(void)setHeight:(double)height;
//-(double)height;
@end
#import "Dog.h"
@implementation Dog
/*
-(void)setName:(NSString *)name;
{
_name=name;
}
-(NSString *)name;
{
return _name;
}
-(void)setAge:(int)age;
{
_age=age;
}
-(int)age;
{
return _age;
}
-(void)setHeight:(double)height;
{
_height=height;
}
-(double)height;
{
return _height;
}
*/
//实现了name对应的获取方法和设置方法
//细节:默认情况下操作的实例变量是name
//@synthesize name;
//name对应头文件@property中的name
//=_name 表示实现的设置方法和获取方法
// 操作的实例变量是_name
@synthesize name=_name;
@synthesize age=_age;
@synthesize height=_height;
@end
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
//点语法
//执行了setname方法
//错误的认识:huzi对象中有name
//本质:调用了一个设置方法
Dog *huzi=[[Dog alloc]init];
//[huzi setName:@"dog"];
huzi.name=@"huzi";
//获取name
//NSString *name=[huzi name];
//
NSString *name=huzi.name;
NSLog(@"name=%@",name);
}
return 0;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2