第一个知识点:类的实现和类合成存取方法
</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
内存管理:assign 基本(默认)
注意事项:
第一:这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
atomic 原子性的存取器函数
特点:原子性的存取器函数认为是线程安全的
-(NSNumber *) numerator
{
[threadLock lock];
NSNumber *result=[[numerator retain] autorelease];
[threadLock unlock];
return result;
}
nonatomic 非原子的存取器函数
特点:非原子性的存取器函数不能认为是线程安全的
-(NSNumber *) numerator
{
return [[numerator retain] autorelease];
}
关于self关键字说明
第三个知识点:关键字self的理解
关键字self用来指明对象是当前方法的接受者