您的位置:首页 > 职场人生

黑马程序员--类合成存取方法

2015-05-20 16:05 232 查看

第一个知识点:类的实现和类合成存取方法

</pre>存取方法:取值方法和设置方法<p></p><p>例一:</p><p>第一:演示自己写读取方法和设置方法</p><p></p><p style="margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; color:rgb(130,46,14)">//接口文件</p><p style="margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; color:rgb(130,46,14)"></p><pre name="code" class="objc">//
// Fraction.h
// 第一个类演示
//
// Created by smartlei on 15/5/20.
// Copyright (c) 2015年 smartlei. All rights reserved.
//

#ifndef _______Fraction_h
#define _______Fraction_h

#include <Foundation/foundation.h>

@interface Fraction : NSObject

-(void) printf;
-(void) setNumerator:(int) n;
-(void) setDenominator:(int) d;

-(int) numerator;
-(int) denominator;

-(double) converToNum;

@end

#endif


//实现文件

//
// Fraction.m
// 第一个类演示
//
// Created by smartlei on 15/5/20.
// Copyright (c) 2015年 smartlei. All rights reserved.
//
#import <Foundation/Foundation.h>
#include "Fraction.h"

@implementation Fraction
{
int numerator;
int denominator;
}
-(void) printf
{
NSLog(@"%i/%i",numerator,denominator);
}
-(void) setNumerator:(int)n
{
numerator =n;
}
-(void) setDenominator:(int)d
{
denominator =d;
}
-(int) numerator
{
return numerator;
}
-(int) denominator
{
return denominator;
}
-(double) converToNum
{
if(denominator!=0)
return (double) numerator/denominator;
else
return NAN;
}
@end


第二:系统自动生成取值方法和设置方法

接口文件

/
/
// Fraction.h
// 第一个类演示
//
// Created by smartlei on 15/5/20.
// Copyright (c) 2015年 smartlei. All rights reserved.
//
#ifndef _______Fraction_h
#define _______Fraction_h
@interface Fraction :NSObject
@property int numerator,denominator;//声明属性
-(void) printf;
-(double) convertToNum;
#endif


实现文件

//
// Fraction.m
// 第一个类演示
//
// Created by smartlei on 15/5/20.
// Copyright (c) 2015年 smartlei. All rights reserved.
//

#import <Foundation/Foundation.h>

#include "Fraction.h"

@implementation Fraction
{
int numerator;
int denominator;
}

@synthesize numerator; //自动生成存取方法
@synthesize denominator;//自动生成存取方法

-(void) printf
{
NSLog(@"%i/%d",numerator,denominator);
}
-(double) convertToNum
{
if(numerator!=0)
return (double) numerator/denominator;
else
return MAN;
}


第二个知识点:关于访问控制属性说明

特别注意:下边锁引用的全是对象

@property()里边的属性

访问控制: readwrite      readonly

内存管理:assign 基本(默认)       retain 对象  copy 实现NScopying

注意事项:

第一:这3个特性互斥

assign风格的赋值函数

这种特性通常用于标量属性、委托以及不适合保留的其他类型的变量

-(void) setDenominator:(int *)d
{
denominator =d;
}
retain风格的赋值函数

只用于处理本身就是对象的数据程序,它指定在传入到赋值函数的值赋给组员变量的同时向其发送一条保留消息

</pre><pre name="code" class="objc">-(void) setDenominator:(NSNumber *)d
{   [denominator  autorelease];
denominator  =[d retain];//向d发送一条保留信息
}



</pre><pre name="code" class="objc" style="color: rgb(70, 70, 70);">


copy风格的赋值函数

只用于处理本身就是对象的数据程序,它指定在传入到赋值函数的值赋给组员变量复制到对象成员变量
-(void) setDenominator:(NSNumber *)d
{
[denominator  autorelease];
denominator  =[d copy];
}


线程安全:atomic     nonatomic 非原子性

atomic 原子性的存取器函数

特点:原子性的存取器函数认为是线程安全的
-(NSNumber *) numerator
{
[threadLock lock];
NSNumber *result=[[numerator retain] autorelease];
[threadLock unlock];
return result;
}


nonatomic 非原子的存取器函数

特点:非原子性的存取器函数不能认为是线程安全的

-(NSNumber *) numerator
{
return  [[numerator retain] autorelease];
}


关于self关键字说明

第三个知识点:关键字self的理解

关键字self用来指明对象是当前方法的接受者
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: