OC基礎(15)

@property參數

本小節知識點:

  1. 【掌握】控制set方法的內存管理
  2. 【掌握】控制需不須要生成set方法
  3. 【掌握】多線程管理

4. 【掌握】控制set方法和get方法的名稱

1.控制set方法的內存管理

  • retain : release舊值,retain新值(用於OC對象)
  • assign : 直接賦值,不作任何內存管理(默認,用於非OC對象類型)
  • copy : release舊值,copy新值(通常用於NSString *)

2.控制需不須要生成set方法

  • readwrite :同時生成set方法和get方法(默認)
  • readonly :只會生成get方法

3.多線程管理

  • atomic :性能低(默認)
  • nonatomic :性能高

4.控制set方法和get方法的名稱

  • setter : 設置set方法的名稱,必定有個冒號:
  • getter : 設置get方法的名稱web

  • 注意: 不一樣類型的參數能夠組合在一塊兒使用多線程

 

@Property練習

本小節知識點:

  1. 【掌握】@Property練習

1.@Property練習

  • 微博類(Status)ide

    • 文字內容(text)
    • 配圖(picture)
    • 發表時間(createTime)
    • 做者(author)
    • 轉發的說說(repostStatus)
    • 評論數(commentCount)
    • 轉發數(retweetCount)
    • 贊數(likeCount)
  • 做者類(Author)post

    • 暱稱(name)
    • 頭像(icon)
    • 生日(birthday)
    • 帳號(account)
  • 帳號(Account)性能

    • 帳號名稱(name)
    • 帳號密碼(pwd)
    • 帳號註冊時間(registerTime)

       

模擬場景:
* 老王在2010-1-1 17:56:34註冊了一個帳號
(名稱:xiaomage@520it.com, 密碼:haomage)
 * 老王的生日是1986-3-8 18:18:18
 * 老王發佈一條說說
     * 文字內容  @「爆米花手機比逼格更有逼格」
     * 圖片 @「phone.png」
     * 發表時間: 2015-6-20 10:23:23
     * 做者: 老王
     * 被轉發的說說: 沒有
     * 評論數: 100
     * 轉發數: 90
     * 點贊數: 200

 * 王大錘在2012-8-8 19:26:54註冊了一個帳號
 (名稱:dachuimeimei@520it.com, 密碼:654321)
 * 王大錘的生日是1989-9-6 14:16:28
 * 王大錘在2015-6-21 20:47:09時,轉發了張三以前發佈的說說, 而且還附帶了一句話:@「真的頗有逼格」

 

@class

本小節知識點:

  1. 【掌握】@class基本概念
  2. 【掌握】@class其它應用場景
  3. 【掌握】@class和#import

1.@class基本概念

  • 做用ui

    • 能夠簡單地引用一個類
  • 簡單使用atom

    • @class Dog;
    • 僅僅是告訴編譯器:Dog是一個類;並不會包含Dog這個類的全部內容
  • 具體使用url

    • 在.h文件中使用@class引用一個類
    • 在.m文件中使用#import包含這個類的.h文件

2.@class其它應用場景

  • 對於循環依賴關係來講,比方A類引用B類,同時B類也引用A類
  • 這種嵌套包含的代碼編譯會報錯
#import "B.h"
@interface A : NSObject
{
    B *_b;
}
@end

#import 「A.h"
@interface B : NSObject
{
    A *_a;
}
@end
  • 當使用@class在兩個類相互聲明,就不會出現編譯報錯
@class B;
@interface A : NSObject
{
    B *_b;
}
@end

@class A;
@interface B : NSObject
{
    A *_a;
}
@end

3.@class和#import

  • 做用上的區別spa

    • #import會包含引用類的全部信息(內容),包括引用類的變量和方法
    • @class僅僅是告訴編譯器有這麼一個類, 具體這個類裏有什麼信息, 徹底不知
  • 效率上的區別線程

    • 若是有上百個頭文件都#import了同一個文件,或者這些文件依次被#import,那麼一旦最開始的頭文件稍有改動,後面引用到這個文件的全部類都須要從新編譯一遍 , 編譯效率很是低
    • 相對來說,使用@class方式就不會出現這種問題了

README

循環retian

本小節知識點:

  1. 【掌握】循環retian基本概念

1.循環retian基本概念

  • 循環retain的場景

    • 好比A對象retain了B對象,B對象retain了A對象
  • 循環retain的弊端

    • 這樣會致使A對象和B對象永遠沒法釋放
  • 循環retain的解決方案

    • 當兩端互相引用時,應該一端用retain、一端用assign
相關文章
相關標籤/搜索