成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Objective_C擴展機制學習

移動開發 iOS
Objective_C比c/c++更強大,因為它包含了一些設計模式在里面。聽說java里幾乎包括了所有的設計模式,不過我沒有深入用過java,曾經用過j2me寫過一點點邏輯。

Objective_C擴展機制學習是本文要介紹的內容,學Objective_C已有一年時間了,開發iphone也有一年時間了。首先學習Objective_C的時候,是賃著c/c++的基礎,所學的知識是按c/c++的方式去學習,其實Objective_C是 C 的超集當時一點也沒體會到,其精髓也是完全沒有理解到。隨關時間的推移,慢慢了解更多。

Objective_Cc/c++更強大,因為它包含了一些設計模式在里面。聽說java里幾乎包括了所有的設計模式,不過我沒有深入用過java,曾經用過j2me寫過一點點邏輯。用Objective_C最靈活的兩 點就是:category與associative.  我把他們歸為Objective_C的擴展機制。category可以擴展一個類的方法,associative可以擴展一個類的屬性。 這兩種方法加起來其功能完全等效于c++中的繼承。

下面看一個associative的列子,需要的頭文件是:

  1. #import <objc/runtime.h> 
  2.  
  3. static char overviewKey = 'a';    
  4. NSArray *array = [[NSArray alloc] initWithObjects:@ "One", @"Two", @"Three", nil];    
  5. // For the purposes of illustration, use initWithFormat: to ensure      
  6. // we get a deallocatable string      
  7. NSString *overview = [[NSString alloc] initWithFormat:@"%@", @"First three numbers"];    
  8. objc_setAssociatedObject ( array, &overviewKey, overview, OBJC_ASSOCIATION_RETAIN);     
  9. [overview release];    
  10. NSString *associatedObject = (NSString *) objc_getAssociatedObject (array, &overviewKey);    
  11. NSLog(@"associatedObject: %@", associatedObject);    
  12. objc_setAssociatedObject ( array, &overviewKey, nil, OBJC_ASSOCIATION_ASSIGN );     
  13. [array release];    
  14.  static char overviewKey = 'a';  
  15.  NSArray *array = [[NSArray alloc] initWithObjects:@ "One", @"Two", @"Three", nil];  
  16.  // For the purposes of illustration, use initWithFormat: to ensure   
  17.  // we get a deallocatable string   
  18.  NSString *overview = [[NSString alloc] initWithFormat:@"%@", @"First three numbers"];  
  19.  objc_setAssociatedObject ( array, &overviewKey, overview, OBJC_ASSOCIATION_RETAIN);   
  20.  [overview release];  
  21.  NSString *associatedObject = (NSString *) objc_getAssociatedObject (array, &overviewKey);  
  22.  NSLog(@"associatedObject: %@", associatedObject);  
  23.  objc_setAssociatedObject ( array, &overviewKey, nil, OBJC_ASSOCIATION_ASSIGN );   
  24.  [array release]; 

objc_setAssociatedObject給array增加了一個屬性,我們可以通過key獲取這個屬性,見上面代碼:objc_getAssociatedObject, 第二個objc_setAssociatedObject設為nil,則是刪除這個屬性。

這兒還有一個例子:http://oleb.net/blog/2011/05/faking-ivars-in-objc-categories-with-associative-references/關于category,大家就google一下吧。

小結:詳解Objective_C擴展機制學習的內容介紹完了,希望通過本文的學習對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-08-16 10:35:59

Objective_C私有方法

2011-08-04 10:57:33

Objective-C C語言 BOOL

2011-08-04 18:14:42

Objective-C 消息

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2011-07-27 16:36:03

iphone Objective- 靜態庫

2011-08-04 11:04:14

Objective-C 面向對象 繼承

2011-08-04 10:38:17

Objective-C 預處理程序

2011-07-29 16:16:30

Objective-c block

2011-08-17 10:58:59

Objective-C構造函數

2011-08-18 13:28:35

Objective-C內存

2011-05-11 14:06:49

Objective-C

2011-08-04 14:58:37

Objective-C Cocoa NSString

2013-08-21 14:57:42

objective-c問題

2015-10-08 10:01:10

Objective-CLayout

2011-07-18 16:36:51

Objective-C XCode

2014-04-01 10:50:42

iOS開發runtimeObjective-C

2011-08-17 10:29:39

Objective-C預處理

2011-08-04 13:38:01

Objective-C C++

2010-07-07 18:34:43

UML公共機制

2011-07-27 16:55:12

Objective-c 閉包
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 最新中文字幕在线 | 国产精品综合视频 | 久久综合成人精品亚洲另类欧美 | 日韩一区二区在线视频 | 91精品久久久 | 美女人人操 | 九九激情视频 | 欧美日韩国产精品一区二区 | 欧美日韩高清在线一区 | 久久狠狠 | 亚洲不卡视频 | 欧美日韩高清免费 | 久久人人国产 | 欧美亚洲另类丝袜综合网动图 | 日韩av在线一区 | 午夜影院操 | 国产精品18久久久久久白浆动漫 | 免费在线h视频 | 免费在线一区二区三区 | 欧美精品久久久久久久久久 | 成年人黄色一级片 | 北条麻妃99精品青青久久 | 日韩一区二区三区在线视频 | www.99热.com| 在线观看久草 | 午夜精品久久久久久久久久久久久 | 精品一区二区三区在线播放 | 九九九久久国产免费 | 成人视屏在线观看 | 我要看一级片 | 免费一区二区三区 | 成人在线观看免费爱爱 | 亚洲精品天堂 | 国产综合久久久久久鬼色 | 欧美一区二 | av电影手机版 | caoporn视频在线 | 男女爱爱网站 | 免费在线观看一区二区三区 | 欧美专区在线观看 | 日本免费黄色 |