<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      iOS 學習如何聲明私有變量和私有方法

      私有變量

      首先來說 OC 中沒有絕對的私有變量,這么說基于兩點原因

      1可修改:   通過KVC  鍵值編碼 來修改私有成員變量的值

      2可讀取 :  通過底層runtime 獲取實例變量Ivar 對應私有值

      但是private的存在意義也很明確 不希望被當前類 以外的外界得知.

      聲明方式 

      @private :   作用只能是在自己類

      @protected :通常 我們都對變量不做特別約束,只是主觀調控其使用 那么就是默認 @protected, 作用范圍是自身類 和 繼承自身的子類

      @public:      作用范圍高于@protect  高于@private  在任何地方調用.

      私有變量和不希望被外界直接訪問的變量應該寫在.m文件里面. 如果希望被訪問的 @protected 和 @public 應該放在.h文件里面聲明

       

      使用舉栗子:

      #import <Foundation/Foundation.h>
      
      @interface MethodDetailMusic : NSObject
      {
          @public NSString *publicStr;
      }
      
      @property (nonatomic, strong) NSString * img_url;
      @property (nonatomic, strong) NSString * amount;
      @property (nonatomic, strong) NSString * time;
      @property (nonatomic, strong) NSString * title;
      @property (nonatomic, strong) NSString * url;
      @property (nonatomic, strong) NSString * method_id;
      
      - (void)initPrivateString;
      
      @end
      #import "MethodDetailMusic.h"
      
      @interface MethodDetailMusic()
      {
          @private NSString *specialPrivateString;
      }
      
      //聲明一個私有方法
      - (void)createPrivateFunction;
      
      @end
      
      @implementation MethodDetailMusic
      
      - (void)createPrivateFunction
      {//TODO:實施一個私有方法
          
      }
      
      - (void)initPrivateString
      {
          if (!specialPrivateString) {
              specialPrivateString = @"我是私有變量";
          }
          NSLog(@"%@",specialPrivateString);
      }
      - (void)viewDidLoad {
          [super viewDidLoad];
          [self test1];//調用
      }
      
      - (void)test1
      {
          MethodDetailMusic *music = [[MethodDetailMusic alloc]init];
          music.title = @"haha";
          [music initPrivateString];//這里 調用類本身的實例方法有一處日志
          
          NSLog(@"\n title:%@ \n",music.title);
          
          //可修改: KVC 鍵值編碼 修改私有變量
          [music setValue:@"修改私有變量的值" forKey:@"specialPrivateString"];
          [music initPrivateString];
          
          //可讀取 #import <objc/runtime.h>  獲取私有變量
          //定義一個實例變量 privateString
          Ivar privateString = class_getInstanceVariable([music class], "specialPrivateString");
          NSString *privateStr = object_getIvar(music, privateString);
          NSLog(@"打印私有變量===%@",privateStr);
          
          music->publicStr = @"我是公有變量";
          
          [self viewControllerPrivateFunc];
      
      }

      log 日志:

      2016-08-17 14:36:23.860 LearningTheroyDemo[10907:5802354] 我是私有變量

      2016-08-17 14:36:23.860 LearningTheroyDemo[10907:5802354] title:haha 

      2016-08-17 14:36:23.860 LearningTheroyDemo[10907:5802354] 修改私有變量的值

      2016-08-17 14:36:23.861 LearningTheroyDemo[10907:5802354] 打印私有變量===修改私有變量的值

      私有方法聲明

      方法1:就是在.m文件里面聲明的方法 只能在當前頁面調用 (在.h文件中聲明的方法 是可以被外界調用的)

      如代碼music 模型中 .m方法里私有方法的聲明和實施

      方法2: 建立類別(也有人管這個叫分類), 網上有人 認為 在這里建立 是對應類的私有方法.

      但是我并不這么認為,我主要使用類別分散代碼. 一塊 一塊很規矩 可讀性明顯增強,如果在第三個類里面寫聲明 還是可以調用的,  但是如果你就想當私有方法的話 也并沒有太大問題.使用條件 你都清楚了.寫錯就賴你自己沒注意約束條件吧.

       (如果覺得我說的有錯誤 求指正,不要放過 我寫出的bug 給我提bug 我一定會執行反饋的!!!)

       

      posted on 2016-08-17 16:20  ACM_Someone like you  閱讀(5123)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 少妇爽到爆视频网站免费| 久久99精品国产麻豆婷婷| 一区二区三区放荡人妻| 在线观看AV永久免费| 国产中文字幕精品喷潮| 亚洲日韩乱码中文无码蜜桃| 欧美人伦禁忌dvd放荡欲情 | 国内视频偷拍久久伊人网| 久久综合久中文字幕青草| 久久久久人妻一区精品色| 绝顶丰满少妇av无码| 精品视频一区二区三区不卡| 色综合久久久久综合体桃花网| 中文国产成人精品久久不卡 | 亚洲婷婷六月的婷婷| 亚洲精品韩国一区二区| 久久久久久亚洲精品成人| 日韩精品亚洲 国产| 美女无遮挡免费视频网站| 国产精品自拍自在线播放| 大地资源免费视频观看| 九九热精彩视频在线免费| 亚洲精品码中文在线观看| 天堂mv在线mv免费mv香蕉| 色护士极品影院| A毛片终身免费观看网站| 99精品国产综合久久久久五月天| 午夜射精日本三级| 亚洲av麻豆aⅴ无码电影| 午夜DY888国产精品影院| 欧美一进一出抽搐大尺度视频| 亚洲av高清一区二区三| 精品人妻无码中文字幕在线| 国产精品天天看天天狠| av激情亚洲男人的天堂| 好吊妞| 波多野结av衣东京热无码专区| 超碰人人超碰人人| 你懂的在线视频一区二区| 国产精品青青在线观看爽香蕉| 国产欧美久久一区二区三区 |