Object-c基礎(2)

類和對象

在Object-c中類,其接口(interface)和實現(implementation)是分離開來的

  • 類的聲明

      @interface 類名:父類名{實例變量的定義;}方法聲明;...@end
  • 類的實現

      @implementation 類名方法定義...@end
對象

一個類提供對象的圖紙,然后創建這個類的對象

    類名 對象名=[[類名 alloc]init];

訪問一個類的對象的屬性可以直接使用訪問成員運算符(.)

屬性和變量

屬性

屬性(property)指在接口文件中聲明實例對象到底有哪些屬性

屬性聲明的一些規則總結如下:

  • 自動生成訪問方法
  • 自動生成實例變量
  • 更簡單地調用訪問方法(使用點操作符(.)完成)
  • 屬性的內省(introspection):通過內省可以動態地查詢類中聲明的屬性以及屬性的名稱和類型
顯示聲明屬性

讓編譯器自動生成與數據成員同名的方法

    @property int hitPoint;

相當于自動聲明了實例變量和讀寫方法,方便外部使用

屬性的實現

使用@synthesize,讓編譯器自動生成setter和getter方法

    @synthesize hitPoint;

synthesize還有一個作用就是可以指定與屬性對應的實例變量,例如@synthesize myButton = xxx;那么self.myButton其實是操作的實例變量xxx,而不是_myButton了。

屬性指定的選項

@property 可用的選項

  • 指定方法名(顯式指定getter和setter方法名)
    • getter=getter 方法名
    • setter=setter 方法名
  • 讀寫屬性
    • readonly(只讀)
    • readwrite(讀寫)
  • 賦值時的選項
    • assign(單純賦值)
    • retain(進行保持操作)
    • unsafe_unretained(同assign一樣(用于ARC))
    • strong(同retain一樣(用于ARC))
    • weak(弱引用(用于ARC))
    • copy(復制對象)
  • 原子性操作
    • nonatomic(非原子性操作、非線程安全)
屬性賦值時的選項

我們可以為可讀寫的@property設置選項,選項共有6種:assign,retain,unsafe_unretained,strong,weak和copy。選項之間是排他關系,可以不設置任何選項或只設置6種種的一種。根據所修飾的屬性是否是對象類型或者所采用的內存管理方式(手動計數,ARC)的不同,選項的意義也不同。

如表所示:

基礎數據類型手動引用計數ARC
未指定任何選項直接賦值警告警告
assign
unsafe_unretained
直接賦值直接賦值直接賦值
retain
strong
出錯賦值并對新值進行retain操作賦值并對新值進行retain操作
weak出錯無特別操作和assign相同弱引用
copy出錯賦值時建立傳入值的一份副本賦值時建立傳入值的一份副本

轉載于:https://www.cnblogs.com/evansyang/p/5248760.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375029.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375029.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375029.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

arm linux 下移植busybox 的tftp

(1)進入busybox目錄,make menuconfig ,然后在networking中勾選tftp項跟tftpd項。 (2)配置/etc/inetd.conf 中關于tftp的選項(此部未驗證,不需要應該也可以) tftp dgra…

靶場練習第二十天~vulnhub靶場之Funbox: Scriptkiddie

一、環境搭建 靶官網機下載地址:Funbox: Scriptkiddie ~ VulnHub 百度云盤下載鏈接: 百度網盤 請輸入提取碼 提取碼: i4a9 二、信息收集 1.nmap命令掃描靶機 先用ifconfig查看kali的IP,因為kali和靶機都是NAT模式下,所以用 nmap 192.168…

documentbodyscrollTop的值總為零的解決辦法

有一個功能需要判斷返回頂部按鈕是否顯示。 JS代碼如下: var sTop document.body.scrollTop;if(sTop>100){document.getElementById("sm_top").style.display"block";}else{document.getElementById("sm_top").style.display&quo…

spring mvc 多線程并發

ThreadLocal為解決多線程程序的并發問題提供了一種新的思路。使用這個工具類可以很簡潔地編寫出優美的多線程程序。 http://www.xuebuyuan.com/1628190.html 我們知道Spring通過各種DAO模板類降低了開發者使用各種數據持久技術的難度。這些模板類都是線程安全的,也就…

靶場練習第十九天~vulnhub靶場之GreenOptic: 1

一、準備工作 kali和靶機都選擇NAT模式(kali與靶機同網段) 1.靶場環境 下載鏈接:GreenOptic: 1 ~ VulnHub 2.kali的ip 命令:ifconfig 3.靶機的ip 掃描靶機ip sudo arp-scan -l 二、信息收集 1.nmap的信息收集 (1)掃描靶機開…

靶場練習第二十五天~vulnhub靶場之Raven-2

一、準備工作 kali和靶機都選擇NAT模式(kali與靶機同網段) 1.靶場環境 下載鏈接:Raven: 2 ~ VulnHub 2.kali的ip 命令:ifconfig 3.靶機的ip 掃描靶機ip sudo arp-scan -l 二、信息收集 1.nmap的信息收集 (1)掃描靶機開放的…

每天一個linux命令(46):vmstat命令

vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監控。他是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。vmstat 工具提供了一種低開銷的系統性能觀察方…

用TypeScript開發了一個網頁游戲引擎,開放源代碼

最開始學習電腦編程的原動力之一就是想自己編寫游戲,一方面很好奇這些游戲是怎么做出來的,另一方面覺得有些地方設計的不合理,希望電腦游戲既能讓人玩的有趣,又不浪費時間。 學校五年,畢業十年,學用了十多種…

靶場練習第二十一天~vulnhub靶場之Momentum-1

一、環境搭建 1.ifconfig查看kali的ip 2.創建靶機 靶機下載地址:Momentum: 1 ~ VulnHub 二、信息收集 1.nmap命令 尋找靶機ip:nmap 192.168.101.0/24 2.端口掃描 使用命令:nmap -A -T4 -p 1-65535 192.168.101.113,發現開放2…

為集合排序的三個方法

// 為集合字符串排序(cmpare:) // - null :空類型 就是字符型的0; // - [NSNull null]是對象類型,能夠存入集合的數據:為其分配了內存,但其中的值為空(不能被排序否則程序會崩潰&am…

C#ArrayList對象集合

ArrayList alist new ArrayList();//集合對像 長度可以改變,類型不限//添加單個元素可以Add()alist.Add("在在的");alist.Add(35);alist.Add(3.14);alist.Add(c);alist.Add(5000m);//如果用Add()添加數組或集合最好用 alist.AddRange()alist.AddRange(…

靶場練習第二十二天~vulnhub靶場之Momentum-2

一、準備工作 靶機下載地址:Momentum: 2 ~ VulnHub 1.查看kali的ip 使用命令ifconfig 2.使用nmap命令 nmap 192.168.101.0/24 查看開放的端口和協議:nmap -sV 192.168.101.114 二、信息收集 1.使用gobuster,尋找隱藏的網站 gobuster di…

索引深入淺出(8/10):覆蓋索引或列包含

在索引深入淺出:非聚集索引的B樹結構在聚集表里,在聚集表里,我們看到非聚集索引的葉子層只包含非聚集索引鍵和聚集索引鍵。從聚集表結構或堆表結構里拿到剩下列,SQL Server需要進行書簽/鍵查找操作。很多情況下書簽或鍵查找非常消…

靶場練習第二十三天~vulnhub靶場之GOATSELINUX: 1

一、準備工作 kali和靶機都選擇NAT模式(kali與靶機同網段) 1.靶場環境 下載鏈接:GoatseLinux: 1 ~ VulnHub 2.kali的ip 命令:ifconfig 3.靶機的ip 掃描靶機ip sudo arp-scan -l 二、信息收集 1.nmap的信息收集 (1)掃描靶機…

Spring事務報Connection is read-only

昨天做項目時,寫了個方法,程序突然報了Connection is readonly. Queries leading to data modification are not allowed調了程序半天,最后才發現是自己在spring配置文件中增加了事務.把方法寫成了大寫開頭了,但是spring配置是以小寫開頭 代碼…

HTTP協議具體解釋

HTTP是一個屬于應用層的面向對象的協議。因為其簡捷、高速的方式。適用于分布式超媒體信息系統。它于1990年提出,經過幾年的使用與發展,得到不斷地完好和擴展。眼下在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中&#x…

靶場練習第二十四天~vulnhub靶場之Raven-1

一、準備工作 kali和靶機都選擇NAT模式(kali與靶機同網段) 1.靶場環境 下載鏈接:Raven: 1 ~ VulnHub 2.kali的ip 命令:ifconfig 3.靶機的ip 掃描靶機ip sudo arp-scan -l 二、信息收集 1.nmap的信息收集 (1)掃描靶機開放的…

【知識積累】DES算法之C#加密Java解密

一、前言 在項目需要添加安全模塊,客戶端調用服務端發布的service必須要經過驗證,加密算法采用DES,客戶端采用C#進行加密,服務端使用Java進行解密。廢話不多說,直接上代碼。 二、客戶端 客戶端采用C#進行開發&#xff…

Space.js – HTML 驅動的頁面 3D 滾動效果

為了讓我們的信息能夠有效地溝通,我們需要創建用戶和我們的媒體之間的強有力的聯系。今天我們就來探討在網絡上呈現故事的新方法,并為此創造了一個開源和免費使用的 JavaScript 庫稱為 space.js。該庫是 HTML 驅動的,這意味著你不需要在網站上…

離職感言-Symbio的5年工作回顧和總結(轉載)

離職感言-Symbio的5年工作回顧和總結 (2011-06-02 21:06:30) 轉載▼2005年底,當時我在西安過的還不錯,結了婚,買了房,在公司也受老板器重,但是初為人父,孩子帶給我的那種人生緊迫感:“再不趁還…