黑馬程序員--類合成存取方法

第一個知識點:類的實現和類合成存取方法

</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用來指明對象是當前方法的接受者



















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章