屬性(@property)、@synthesize

来源:http://www.cnblogs.com/xs514521/archive/2016/02/22/5207621.html
-Advertisement-
Play Games

先前我們學的實例變數是這樣的 1 { 2 int _age; 3 int _height; 4 int age; 5 } 後來學屬性 1 @property int age; 看到@property 會自動編譯生成某個成員變數的setter方法和getter方法的聲明 1 - (void)setAg


先前我們學的實例變數是這樣的

1 {
2     int _age;
3     int _height;
4     int age;
5 }    

後來學屬性

1 @property int age;

看到@property 會自動編譯生成某個成員變數的setter方法和getter方法的聲明

1 - (void)setAge:(int) age;
2 - (int)age;

舉例:

@property int _age;

就會編譯生成

- (void)set_age:(int) age;

- (int)_age;

也就是說你怎麼寫實例變數就會怎麼編譯生成,為了生成標準的實例變數的setter方法和getter方法的聲明,所以屬性不要再加 _ 了,並且setAge大寫

 

既然使用@property有了實例變數的setter方法和getter方法的聲明,那麼實現就是@synthesize property

1 // 後面要求寫屬性,明確要對哪個屬性實現一下setter、getter方法
2 @synthesize age

看到@synthesize 會自動編譯生成某個成員變數的setter方法和getter方法的實現

1 - (void)setAge:(int)age {
2   _age = age;  
3 }
4 
5 - (int)age {
6   return age;  
7 }

如果硬要去訪問 _age 那個成員變數,就

@synthesize age = _age;

這樣會自動生成age的setter方法和getter方法的實現,並且會去訪問_age這個成員變數

註意:左邊的age:要實現的是age的setter方法和getter方法

   右邊的age:是在實現里去訪問_age這個成員變數,所以這樣就將屬性和實例變數聯繫在一起了

   系統規定成員變數要加 _ 修飾

 

上面的@synthesize age;沒寫後面的成員變數,會預設訪問age

此時:會自動訪問_age這個成員變數,如果不存在,就會自動生成@private類型的_age實例變數,在延展中聲明,是私有的

 

XCode4.n之後 @property 即生成聲明有生成實現

1 @property int age;

屬性是實例變數_age的一對setter、getter方法的聲明和實現

預設情況下,setter、getter方法中的實現會去訪問 _ 開頭的實例變數

 

學到這裡,就清楚了為什麼一開始我們學的時候成員變數以 _ 開頭,其實系統內部是這樣的

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 分類:C#、Android、VS2015; 創建日期:2016-02-23 一、簡介 這一章我們主要學習Intent的基本用法,並通過例子演示如下功能: 如何啟動另一個界面; 如何獲取另一個界面的返回值; 如何利用Intent讀取圖庫中的圖片; 如何利用Intent讀取和更新通訊錄; 如何利用Int...
  • 做蘋果開發也有段很長的時間了,斷斷續續大概已經4年了【目前沒有從事這個行業】,從剛開始在北京的一家培訓公司學習iOS開發起,到找到工作,再到丟掉工作,失去信心,再到重回開發。過程複雜。今天總結一下一些常用的蘋果電腦操作和開發環境XCODE以及終端的常用命令的一些操作知識。 首先總結一下蘋果系統的操作
  • 本文目錄 UIView+WebCacheOperation UIImageView+WebCache、UIImageView+HighlightedWebCache、MKAnnotationView+WebCache UIButton+WebCache 對於視圖分類,我們最熟悉的當屬 這個分類了。通
  • 如下代碼 DrawerLayout mdrawerLayout; Button btn; ---------------------------------------------------------------------------------------------------------
  • 現象: 升級到iOS7後,UIStatusBar的出現導致現有UI界面亂掉了。 原因: 由於寫死了某些控制項的絕對位置,原先隱藏UIStatusBar的代碼沒有在iOS7中起作用 解決方法: iOS7以下版本隱藏UIStatusBar的方法: - (BOOL)application:(UIApplic
  • ListView和Adapter的使用 首先介紹一下ListView是Android開發過程中較為常見的組件之一,它將數據以列表的形式展現出來。一般而言,一個ListView由以下三個元素組成: 1、View,用於展示列表,通常是一個xml所指定的。大家都知道Android的界面基本上是由xml文件
  • 添加約束
  • 【原】FMDB源碼閱讀(一) 本文轉載請註明出處 —— polobymulberry-博客園 1. 前言 說實話,之前的SDWebImage和AFNetworking這兩個組件我還是使用過的,但是對於FMDB組件我是一點都沒用過。好在FMDB源碼中的main.m文件提供了大量的示例,況且網上也有很多
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...