iOS 的 set.get.構造方法


一、set方法和get方法

      1.set方法和get方法的使用場合

      @public的成員可以被隨意賦值,應該使用set方法和get方法來管理成員的訪問(類似機場的安檢、水龍頭過濾,過濾掉不合理的東西),比如僵屍的生命值不能為負數

      2.set方法

  1. 作用:用來設置成員變量,可以在方法里面過濾掉一些不合理的值
  2. 命名規范:
  • 方法都是以set開頭,而且后面跟上成員變量名,成員變量名的首字母必須大寫
  • 形參名稱不要跟成員變量同名

     3.get方法

  1. 作用:返回對象內部的成員變量
  2. 命名規范:get方法的名稱一般就跟成員變量同名
  1. 成員變量的命名規范
  • 成員變量都以下划線 _ 開頭
  • 可以跟get方法的名稱區分開
  • 可以跟其他局部變量區分開,一看到下划線開頭的變量,肯定是成員變量
  • 代碼示例
#import <Foundation/Foundation.h>
// 聲明
@interface Car : NSObject
{
    int _wheels; // 輪子個數
}
/*set方法*/
- (void) setWheels:(int)wheels;
/*get方法*/
- (int) wheels;
@end
@implementation Car
// set方法的實現
- (void) setWheels:(int)wheels
{
    // 對外面傳進來的輪子數進行過濾
    if (wheels<=0)
    {
        wheels = 1;
    }
    _wheels = wheels;
}

// get方法的實現
- (int) wheels
{
    return _wheels;
}
@end

  6.封裝的好處

  • 過濾不合理的值
  • 屏蔽內部的賦值過程
  • 讓外界不必關注內部的細節

 

 二、類方法

      1.基本概念

       直接可以用類名來執行的方法(類本身會在內存中占據存儲空間,里面有類\對象方法列表)

      2.類方法和對象方法對比

  1. 對象方法
  • 以減號-開頭
  • 只能讓對象調用,沒有對象,這個方法根本不可能被執行
  • 對象方法能訪問實例變量(成員變量)

     2.類方法

  • 以加號+開頭
  • 只能用類名調用,對象不能調用
  • 類方法中不能訪問實例變量(成員變量)
  • 使用場合:當不需要訪問成員變量的時候,盡量用類方法
  • 類方法和對象方法可以同名

    三、構造方法

  1. 對象創建原理
  • new的拆分兩部曲
  • 分配內存(+alloc)
  • 初始化(-init)

          Person *p1 = [Person alloc];

          Person *p1 = [p1 init];

         合成一句后:

         Person *p = [[Person alloc] init];

     

     2.init方法的重寫

  • 想在對象創建完畢后,成員變量馬上就有一些默認的值
  • init方法的重寫過程
- (id)init
{
    if (self = [super init])
    {
        _age = 10;
    }
    return self;
}

      3.自定義構造方法

  • 構造方法的一些規范
  • 返回值是id類型
  • 方法名都以init開頭
- (id)initWithAge:(int)age {
    if (self = [super init]) {
        _age = age;
    }
    return self;
}
  • 傳遞多個參數進行初始化

- (id) initWithAge:(int)age andNo:(int)no;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM