對 Swift 和 Objective C 來說非常陌生。我的經理要求我將過時的應用程式重新發布到應用程式商店。由于一些 Apple 更新,它已被洗掉,我們的應用程式不符合新的資格。但是我在嘗試編譯專案時遇到了問題。因此,我首先通過在 XCode 等舊軟體上運行更新來更新專案。但是現在我被困在這個 AppDelegate Swift 函式在目標 C 代碼中看不到的問題上。但是,當我右鍵單擊并轉到定義時,找到它們沒有問題。這是一個例子。
目標 C
迅速
uj5u.com熱心網友回復:
您需要為
@objc要從 Swift 檔案訪問到 Objective C 的變數或函式添加前綴,或者將類標記為@objcMembers好像要訪問從 swift 檔案到 Objective c 的所有內容確保您已經創建了一個橋接頭檔案。這是幫助鏈接
您需要在 Objective C 檔案中匯入該橋接頭。
如果您已完成上述所有三個步驟,您將能夠訪問該功能。
uj5u.com熱心網友回復:
在您的代碼中,您將實體方法作為類方法訪問
錯誤本身說
No known class method for selector 'myBlue'
請按照以下步驟操作
@property(nonatomic,strong) IBOutlet AppDelegate *appDelegate; // .h file
self.appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; // .m file. //ViewDidLoad Method
現在您可以訪問方法為
[self.appDelegate myBlue]
別的
[delegate myBlue] // as per your code
最后你需要知道類和實體方法之間的區別
-(void)someInstanceMethod{
//Whatever you want your instance method to do here
}
(void)someClassMethod{
//Whatever you want your class method to do here
}
供參考 :
此外,如果你想在 Objective-C 檔案中使用 Swift 檔案或混合使用它,你需要有 BridgeHeader 檔案
遵循@Pushkraj Lanjekar 建議的答案
希望能幫助到你。
uj5u.com熱心網友回復:
AppDelegate 是一個 Swift 檔案,您需要將它匯入到一個 Objective-C 檔案中。查看 Apple's guide importing swift into Objective-C,您需要:
將生成的 Swift 標頭匯入SettingsViewController.m
#import "ThinkNotes-Swift.h"
如果模塊名稱不是 ThinkNotes,則將其替換為您的專案模塊名稱。
- 確保您需要從 Objective-C 訪問的 Swift 類在其宣告中具有 @objc 屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/512389.html
