可以和如何問一個這個問題,什麼是絕對的指導方針?.h和.m文件中的#import「」有什麼區別?
回答
的(也許簡體)版本是這樣的:
如果導入頭/接口文件,它像包括在那個地方整個其他文件。因此,通常您的所有接口代碼在該位置都是已知的。當你使用某些類/對象時,編譯器需要知道它們是什麼以及它們是如何被精確調用的:這些方法需要什麼參數/參數,這些方法返回什麼?要回答這些問題,頭文件通常包含在implmentation(.m)文件中。
作爲實施進口其自己的頭文件,你可以經常把其他進口就在那裏。但是什麼時候需要在頭文件中導入?當你聲明你的界面時,你經常提到其他類型/類,即你說@proerty (strong) SomeClass *element;
。現在編譯器需要知道關於SomeClass的,但不是全部。如果編譯器知道它是另一個類,那麼在這次可以確定。在頭文件中,不需要更多信息,因此@class SomeClass
的「前向聲明」就足夠了。導入其他類的完整頭文件也適用。
那麼,進口的下滑?主要有兩個參數:編譯時間和導入週期。考慮一個小例子 - 每當SomeClass.h發生變化時,包含它的所有內容都必須重新編譯。這很容易通過完整的代碼級聯。此外,很明顯,即進口頭文件的任何代碼將導入所有的進口等。週期參數是這樣工作的。 A.h進口B.h,B.h進口A.h.根據什麼在他們,應該在另一個之前被稱爲...
(我想提一提的是,問題是多一點輕鬆與最新的編譯器,但基本的論證仍然成立)。
一些更多的注意事項:當你宣佈相互關聯的兩種可能需要的@class向前聲明,即使用一些類聲明只是之下的協議:
@class SomeClass;
@protocol SomeProtocol
-(void)doSomethingWith:(SomeClass *)object;
@end;
@interface SomeClass
@end
向前聲明沒有按不適用於類實現的協議或父類。
非常感謝您的回答!你能談談這個問題中編譯和運行的區別嗎? –
這是關於源代碼和編譯。它根本不會對正在運行的程序產生任何影響。 – Eiko
- 1. import numpy和import math有什麼區別
- 2. `import {history}`和`import history`有什麼區別?
- 3. 什麼是#import和@class,爲什麼它們都在.h和.m文件中?
- 4. .dll,.lib,.h文件有什麼區別?
- 5. C++中#import和#include有什麼區別?
- 6. import modx與modx import *有什麼區別?
- 7. MATLAB中的.m和.mat文件有什麼區別
- 8. Objective-C - 在.h或.m中保留變量 - 有什麼區別?
- 9. #import和繼承有什麼區別?
- 10. iPhone SDK:#import和@class有什麼區別?
- 11. 'require`,`import`和`use`有什麼區別?
- 12. H.264和x.264有什麼區別?
- 13. 什麼用的.h和.M
- 14. emacs中'M-x load-file'和'M-x load-library'有什麼區別?
- 15. Python:「import X」和「from X import *」有什麼區別?
- 16. 「import dateutil.parser」和「from dateutil.parser import parse」有什麼區別?
- 17. css @import和SASS/SCSS @import有什麼區別?
- 18. cmd文件中%和%%有什麼區別?
- 19. 這些#import聲明有什麼區別?
- 20. C#中Console.Write(「H」)和Console.Write('H')之間的區別是什麼?
- 21. 對於m-m關係,mappedBy和belongsTo有什麼區別?
- 22. Python和Java中import語句的含義有什麼區別?
- 23. PowerShell中的Add-PSSnapin和Import-Module有什麼區別?
- 24. import modulname-Swift.h在.m中工作,但不在.h文件中
- 25. 合併.h和.m文件
- 26. eclipse中的Ctrl Alt H和f4有什麼區別
- 27. 在Perl中,`use lib`和`lib-> import`有什麼區別?
- 28. 在GHCi中,':module'和'import'有什麼區別?
- 29. 構建模塊時,Julia中`using`和`import`有什麼區別?
- 30. .so和.lo文件有什麼區別?
的問題是不明確的。你問的是在頭文件中使用'@ class'和'#import'的區別嗎? – trojanfoe
不僅如此,您能解釋一下嗎? –
您已經有了一個相當完整的答案。 – trojanfoe