自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Objective-C 2.0中Category簡明教程

移動開發(fā) iOS
Objective-C 2.0中Category簡明教程是本文要介紹的內容,先來簡單認識一下Category,Category為我們提供了區(qū)別于繼承的另外一種方法來對類進行擴展。

Objective-C 2.0Category簡明教程是本文要介紹的內容,先來簡單認識一下Category,Category為我們提供了區(qū)別于繼承的另外一種方法來對類進行擴展。我們可以向任何已有的類添加成員函數(shù)來實現(xiàn)功能上的擴展(注:category只允許添加成員函數(shù),不能添加數(shù)據(jù)成員),添加的函數(shù)可以訪問類中所有的數(shù)據(jù)成員,該類的子類也將繼承新添加的成員函數(shù)。

假設我們需要擴展前面幾節(jié)用到的book類,添加一個名為Abstract的成員函數(shù)來輸出書籍的摘要。使用category的格式為:

在頭文件中聲明category:

 @interface 需要擴展的類(category名稱) //需要添加的函數(shù) @end

可以看到,聲明category的方法同類的聲明非常類似?;氐轿覀兊睦?,如果我們需要向Book類添加Abstract成員函數(shù),對應的聲明文件如下所示

  1. // // Book+Abstract.h     
  2. #import <Cocoa/Cocoa.h>   
  3. #import "Book.h"       
  4. @interface Book(Abstract)   
  5. -(NSString*) Abstract;   
  6. end  

注意推薦的文件命名規(guī)則:類名+category名.h

接下來我們需要對添加的abstract函數(shù)進行定義,如下所示:

  1. // // Book+Abstract.m     
  2. #import "Book+Abstract.h"       
  3. @implementation Book(Abstract)   
  4. -(NSString*)Abstract{   
  5.    NSString* retstr = [[NSString alloc]initWithString:@"The story is..."];   
  6.    [retstr autorelease]; return retstr; }  
  7. @end  

implementation文件的命名規(guī)則與頭文件相似:類名+category名.m

作為演示,我們只是在Abstract函數(shù)中簡單的輸出一個NSString。下面我們來看客戶端如何調用:

  1.  #import <Foundation/Foundation.h>   
  2.  #import "Book.h"   
  3.  #import "Book+Abstract.h"     
  4.  int main (int argc, const char * argv[]) {   
  5.  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];     
  6.  NSString* name = [[NSString alloc] initWithString:@"Harry Porter"];   
  7.  NSNumber* number = [[NSNumber alloc] initWithInt:100];   
  8.  Book *book = [[Book alloc] initWithTitle:name andNumofpages:number];   
  9.  [number release]; [name release];      
  10.  NSLog(@"Abstract: %@", [book Abstract]);   
  11.  [book release];   [pool drain];   
  12.  return 0;  
  13. }  

為什么對類進行擴展的feature被稱作category?該名稱應該反映了某種初衷,那就是當某個類比較復雜龐大時,我們可以對它的功能(也就是成員函數(shù))進行分類,并且把它們放入不同的文件加以實現(xiàn)。

小結:Objective-C 2.0Category簡明教程的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關推薦

2011-08-17 10:00:12

Objective-CProperty

2012-06-15 09:47:48

Objective-CCategory

2013-12-03 13:05:30

Lua腳本語言

2011-07-08 13:49:46

Objective-C UUID

2009-08-06 17:45:08

C# Webservi

2011-08-01 11:37:41

iPhone Objective- 內存

2011-08-17 15:37:23

Objective-C垃圾收集

2011-07-27 17:10:30

Objective-C 持久化

2011-08-05 14:03:39

Objective-C 對象 模板

2009-09-02 17:38:19

C#開發(fā)GIS

2014-06-20 10:51:35

Linux LVM邏輯卷

2011-08-22 09:48:16

WindowsObjective-C

2011-06-03 08:49:54

Java

2011-08-15 17:47:13

Objective-CisMemberOfC

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2011-07-29 16:08:31

Objective-C 內存

2015-07-08 10:47:57

Using Swift CocoaObjective-C

2023-10-20 14:08:35

digDNS

2011-07-19 15:15:09

Objective-C 內存

2011-07-25 17:31:49

iPhone Objective-
點贊
收藏

51CTO技術棧公眾號