對不起,找不到更合適的標題。#目標進口C:我做錯了嗎?
在我的代碼中,我有兩個類應該知道彼此的存在。所以我使用指向其他類的實例變量。爲了這個工作(我猜?)其他類頭文件應該被導入,所以它知道它有哪些方法等。
這裏是我的代碼(精簡)
MainMenuController.h:
#import <Cocoa/Cocoa.h>
#import "IRCConnection.h"
@interface MainMenuController : NSViewController {
IRCConnection *ircConnection;
}
@property (strong) IRCConnection *ircConnection;
@end
IRCConnection.h:
#import <Foundation/Foundation.h>
#import "MainMenuController.h"
@interface IRCConnection : NSObject {
MainMenuController *mainMenuController;
}
@property (strong) MainMenuController *mainMenuController;
@end
正如你可以看到他們兩個進口對方,但這在其中一個未知類型名稱'MainMenuController'中創建一個錯誤(未知類型名稱'IRCConnection')。
然而,當連接只是一個方法(例如,僅MainMenuController知道IRCConnection),因此,只有在這兩個中的一個import語句,它工作正常。
我該如何讓他們相互瞭解?兩種方式。
希望這個問題是有道理的。
這是正確的方法嗎? – Matthijn
沒有「正確的方式」,但通常的做法是'#import'框架,並在頭文件中爲其他類使用'@ class'。在實現('.m')文件中,你可以''在你的'.h'文件中''導入'@ class'的所有東西。這種做法有助於避免'#import'循環和雙'#imports'。 – spudwaffle
我在'.h'中說'@ class',在'.m'中''import'是最接近「正確方式」的東西。至少這是絕對可以接受的做法。 – andyvn22