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

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

</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;
}

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

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

  1. @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用来指明对象是当前方法的接受者



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值