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

了解Objective-C 源文件組織

移動開發 iOS
本文介紹的是了解Objective-C 源文件組織,主要講述了Objective-C的應用,我們來看內容。

了解Objective-C文件組織是本文要介紹的內容,不多說,我們直接進入文章。最簡單的Objective-C程序,你都可以這樣寫:

  1. #import <Foundation/Foundation.h> 
  2.  
  3. @interface Book : NSObject{   
  4.       
  5. }  
  6.  
  7. -(NSString *) getPrice;  
  8.  
  9. @end  
  10.  
  11. @implementation Book  
  12.  
  13. -(NSString *) getPrice{   
  14.     return @"$17";   
  15. }  
  16.  
  17. @end  
  18.  
  19. int main (int argc, const char * argv[]) {   
  20.     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];  
  21.  
  22.     Book *book=[[Book alloc] init];   
  23.     NSLog(@"Book price: %@",[book getPrice]);   
  24.     [pool drain];   
  25.     return 0;   
  26. }  

理論上講,按照上面的寫法,你可以把所有的代碼都寫在一個文件里。

但是問題是,你不便于維護這個代碼。代碼很長,很亂。

所以,一般有以下幾種形式來拆分和組織代碼:

類文件拆分為頭文件和m文件

使用組的概念來管理文件

拆分接口和實現部分

拆分h文件和m文件很好理解。只要使用Xcode做開發,通過向導頁面創建類,文件默認情況下就是強制分開的:

了解Objective-C 源文件組織

使用組的概念管理文件

使用組的概念。在Xcode下面,程序源文件都是放在Source目錄下的,在該目錄下,可以進一步創建“目錄”,把不同用途的源文件分類放置。這樣就如同桌上凌亂的書歸置到書架里一樣。很好查找和查閱。

了解Objective-C 源文件組織

可以看到,下面是把Book相關的一些類放在book組中了。

了解Objective-C 源文件組織

這個組看起來是目錄,但如果你打開finder,查看目錄結構,發現并不存在這樣的目錄:

了解Objective-C 源文件組織

拆分文件帶來的問題及解決辦法

拆分文件帶來很多好處。不只是自己看著方便了,還能方便多人合作開發。如果多人修改一個文件,很容易出現各種問題。每個人負責自己的代碼文件,這些文件組成一個項目,這樣就不容易造成文件版本上的沖突。

但是,這也帶來了新的問題。一個文件依賴另外一個文件的時候,需要通過import來導入。比如:

  1. #import <Foundation/Foundation.h>   
  2. #import "CategoryDemo.h"   
  3. #import "Book.h"   
  4. #import "MusicBook.h"   
  5. #import "PlayMusic.h"  
  6. @class Author;  
  7. int main (int argc, const char * argv[]) {   
  8.     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];   
  9.     NSString *message=@"你好,世界!";   
  10.     NSLog(@"%@, 長度為: %i",message,[message length]);   
  11.     [message printHelloInfo];   
  12.     Book *book=[[Book alloc] init]; 

這里main方法中使用了Book類,那么,就需要通過import把它引進來,否則,編譯器不知道Book類在哪里。

另外,如果我這樣:

  1. #import <Foundation/Foundation.h>   
  2. #import "CategoryDemo.h"   
  3. //#import "Book.h"   
  4. #import "MusicBook.h"   
  5. #import "PlayMusic.h"  
  6. @class Author;  
  7. int main (int argc, const char * argv[]) { 

注釋了對Book頭文件的導入,系統一樣編譯通過,而且運行正常。這是怎么回事兒呢?

這是因為編譯器很聰明。它發現MusicBook頭文件里面已經導入了Book頭文件:

  1. #import <Cocoa/Cocoa.h>   
  2. #import "Book.h"   
  3. #import "PlayMusic.h"  
  4.  
  5. @interface MusicBook : Book <PlayMusic>

在上面代碼中有一個奇怪的代碼:

  1. @class Author; 

有了這句話,該代碼中的:

  1. book.author=[[Author alloc]init]; 

就不會報錯了。

可以用下面的語句替代@class的代碼:

  1. #import "Author.h"   
  2. //@class Author 

;

系統一樣會很好的工作。那么,@class和#import有什么區別呢?

這里要說一下頭文件依賴關系。如果有100個m文件都導入了某個頭文件,那么,當這個頭文件改變了內容,則編譯器會強制重新編譯這100個m文件的。編譯的速度可想而知。

@class就是為了避免這樣的事情發生的。當編譯器看到比如類文件B是通過@class的方式引入一個類文件A,就不會在該類文件A的頭文件改動后重新編譯B了。

那如果這樣,都用@class替代#import吧。問題是,有些情況,只能使用#import。因為有時候編譯器不只是需要知道類B引用到類A,還需要知道類A的內部信息,而這些信息是類B需要的。比如類B繼承自類A,這時就不能用@class,而只能用#import。

小結:關于了解Objective-C文件組織的內容介紹完了,希望本文對你有所幫助!

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

2011-08-05 15:56:03

Objective-C 消息 函數

2011-08-01 11:37:41

iPhone Objective- 內存

2011-08-02 15:55:31

Objective-C NSAutorele

2011-08-04 13:55:10

Cocoa Objective- 文件

2011-08-10 18:07:29

Objective-C反射

2013-06-20 10:40:32

Objective-C實現截圖

2013-03-27 12:54:00

iOS開發Objective-C

2011-05-11 15:58:34

Objective-C

2011-05-11 11:20:26

Objective-C

2011-08-16 13:43:40

Objective-C文件cocoa

2011-07-26 10:50:50

Objective-C Selector

2011-05-11 13:54:08

Objective-C

2011-05-11 15:45:50

內存管理Objective-C

2011-08-02 13:16:36

Objective-C 語法 函數

2011-08-04 11:15:46

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問題

2011-08-03 16:55:05

Objective-C 代理

2011-08-04 09:35:09

Objective-C 編碼規范
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线麻豆精品入口 | 日韩福利 | 国产精品视频999 | 亚洲一区二区三区在线 | 成人在线电影网站 | 日本超碰| 亚洲免费精品 | www.四虎.com| 欧美一级做性受免费大片免费 | 国产成人免费在线观看 | 免费艹逼视频 | 亚洲精品免费在线观看 | 国内久久 | 精品久久久久久亚洲精品 | 午夜影院在线观看 | 国偷自产av一区二区三区 | 精品欧美乱码久久久久久 | 国产精品色婷婷久久58 | 国产91综合一区在线观看 | 免费观看a级毛片在线播放 黄网站免费入口 | 国外成人在线视频网站 | 久久久久国产一区二区三区四区 | 欧美www在线 | 一级毛片在线播放 | 夜夜草 | 狠狠色香婷婷久久亚洲精品 | 一级一片在线观看 | 91精品国产一区二区三区 | 91精品国产一区二区在线观看 | 日韩在线一区二区 | 成人在线观看免费观看 | 中文字幕av在线 | 午夜码电影 | 午夜激情影院 | 天堂中文av | 亚洲福利一区二区 | 国产日韩亚洲欧美 | 中文字幕一区二区三区精彩视频 | 精品久久久久久 | 毛片一区二区 | 日韩午夜电影 |