iOS關聯物件用法小例子

2021-06-22 19:15:40 字數 1076 閱讀 7936

關聯物件是指通過這種機制把兩個物件關聯起來,使其中乙個物件稱為另外乙個物件的一部分.定義關聯物件時可以定義記憶體管理語義,用以模仿定義屬性時採用的"擁有關係"與"非擁有關係".

關聯物件用法的好處是可以使我們的**很整潔,處理某些邏輯變得更簡單.但是在此本人要提醒各位,只應該在其他辦法行不通時再考慮用它.如果濫用關聯物件,有可能會令你的**失控,難於除錯.塊在捕獲某些變數的時候可能會造成"保留環",而"保留環"產生的原因又比較難查明,因為關聯物件之間的關係沒有正式定義,其記憶體管理語義是在關聯的時候定義的,而不是預先定義好的.所以,各位在用的時候要小心,不能說,因為某個地方可以這麼用就這麼用.

好,話不多說,這年頭,有碼才合法!這就上碼

我們寫乙個彈出框的小例子幫大家理解下關聯物件

首先引入

#import

//設定關聯物件值時,通常使用靜態全域性變數做鍵

static

void * leomyalertviewkety = @"leomyalertviewkety";

@inte***ce

leoviewcontroller()

@end

@implementation leoviewcontroller

- (void)viewdidload

-(void)buttonclick:(uibutton *)sender

break;

default:

break; }

}-(void)makealertview

else

};//注意,此處是將alertview物件和block關聯起來

//此方法以給定的鍵和策略為alertview物件設定關聯物件值

objc_setassociatedobject(alertview,

leomyalertviewkety

, block,objc_association_copy);

[alertviewshow]; }

-(void)alertview:(uialertview *)alertview clickedbuttonatindex:(nsinteger)buttonindex

While True用法小例子

d count user 5 max input times is 5 while true if count user name input 請輸入您的使用者名稱 if name in d break else count user 1print 您輸入的使用者名稱不存在,請重新輸入 contin...

AsyncTask的用法小例子

第乙個泛型 規定doinbackground方法的引數型別,規定asynctask.execute方法傳遞的引數型別 第二個泛型 規定onprogressupdate方法引數的型別,publishprogress引數型別 第三個泛型 規定doinbackground方法的返回值型別 public c...

ThreadLocal的用法小例子

主要是共享工具類的使用,如果是一種競爭改變共享屬性物件的話,還是需要同步 塊,鎖機制 1.共享時間類轉換 public class dateutil catch parseexception e return date public static void main string args serv...