有人能告訴我爲什麼我收到越來越「蘋果Mach-O的連接錯誤」
Undefined symbols for architecture i386: "_OBJC_CLASS_$_ScramblerModel", referenced from: objc-class-ref in ViewController.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)
我的項目是在This zip進出口運行的應用程序
回答
您的代碼顯然是引用此ScramblerModel
類,但你的避風港」 t將ScramblerModel.m
文件包含在您的項目中。
因此,首先,如果你看看你Compile Sources
,它說:
來吧,然後點擊添加在模型中的「+」按鈕。你也可能想爲ScramblerPlayer
這麼做,因爲你也使用了這個類,所以如果你不這樣做,你會得到另一個鏈接器錯誤。
其次,不要忘記告訴應用使用什麼故事板:
三,你的.h對所有IBOutlet
的定義實例變量(高德)屬性。這是一個問題,因爲你的@synthesize
語句是用一個前導下劃線實例化ivars,但是你的.h(和你的代碼)指的是沒有連接任何東西的重複ivars。例如,你有一個財產remainingTime
,你有一個@synthesize remainingTime = _remainingTime
(這是創建一個_remainingTime
伊娃)。因此,您明確聲明的ivar remainingTime
未連接到您的remainingTime
屬性,因此如果使用該ivar,則不會出現用戶界面更新,儘管名稱相似。
您可以通過以下方法解決問題並簡化代碼:(a)爲您的屬性刪除顯式聲明的ivars;和(b)更改你的代碼以引用該屬性,例如self.remainingTime
或ivar _remainingTime
。所以,你的.h被簡化,變成:
//
// ViewController.h
// Scrambler
//
// Created by Alex Grossman on 8/26/12.
// Copyright (c) 2012 Alex Grossman. All rights reserved.
//
#import <UIKit/UIKit.h>
@class ScramblerModel;
@interface ViewController : UIViewController{
ScramblerModel* gameModel;
NSTimer* gameTimer;
}
@property (weak, nonatomic) IBOutlet UILabel *high;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *skipButton;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *restartButton;
@property (weak, nonatomic) IBOutlet UILabel *playerScore;
@property (weak, nonatomic) IBOutlet UILabel *remainingTime;
@property (weak, nonatomic) IBOutlet UILabel *scrambledWord;
@property (weak, nonatomic) IBOutlet UITextField *guessTxt;
-(IBAction)guessTap:(id)sender;
-(IBAction)restart:(id)sender;
-(IBAction)skip:(id)sender;
-(IBAction)category:(id)sender;
-(void) endGameWithMessage:(NSString*) message;
@end
當你編譯你的項目,你會得到很多的錯誤,但是,因爲你的代碼錯誤地引用那些老的,冗餘(和名不副實),高德。因此,例如,在你的viewDidLoad
你有線條狀:
remainingTime.text = [NSString stringWithFormat:@"%i", gameModel.time];
playerScore.text = [NSString stringWithFormat:@"%i", gameModel.score];
這些應該是:
self.remainingTime.text = [NSString stringWithFormat:@"%i", gameModel.time];
self.playerScore.text = [NSString stringWithFormat:@"%i", gameModel.score];
只是重複這種修正到處你指的錯誤的ivars。
如果您忘記將它們添加到您的項目構建階段中,您將收到錯誤「Undefined symbols for architecture i386」。因此,將您的實現文件添加到編譯源文件中,並將Xib文件添加到複製軟件包資源中。
Go to Scramblr Project -> Targets (Scrambl) -> Build Phases -> Complite Sources -> Add a ScramblerModel.m and ScramblerPlayer.m
非常感謝您 –
爲什麼現在不用模擬器加載項目? –
- 1. Glassfish asadmin列出正在運行的應用程序的端口
- 2. 運行二進制WSGI應用程序
- 3. 運行碧玉報告和出口從Java Swing應用程序
- 4. 進出口我的nodejs應用程序進入EACCES
- 5. 如何將android應用程序與運行在PC上的Windows應用程序進行接口
- 6. 運行應用程序時出錯
- 7. 運行Web應用程序時出錯?
- 8. 運行Rails應用程序時出錯
- 9. 運行應用程序時出錯
- 10. 運行MVC應用程序時出錯
- 11. 運行Django應用程序時出錯
- 12. 運行laravel應用程序時出錯
- 13. 運行應用程序時出現java.lang.NullPointerException
- 14. 運行應用程序時出錯
- 15. matplot程序在運行時給出無響應的窗口
- 16. 運行的應用程序
- 17. 運行的應用程序
- 18. 「應用程序窗口,預計......」的警告,但應用程序運行正常
- 19. 在VB.NET應用程序的窗口內運行JAR應用程序(Java)?
- 20. 如果我的asp.net應用程序產生一個進程,該進程是否在asp.net應用程序運行的同一個應用程序域內運行?
- 21. 通過串行端口進行通信的Web應用程序
- 22. Java,多線程應用程序,運行時的主窗口
- 23. 獲取正在運行的metro應用程序的進程ID
- 24. 在運行Web應用程序中進行遠程調試
- 25. 如何從Web應用程序運行命令行進程?
- 26. 應用程序退出後在計算機上運行的進程
- 27. 我的應用程序在退出後繼續在進程中運行
- 28. 退出應用程序時,一個進程正在進行
- 29. 運行Qt應用程序時可執行的程序入口點錯誤
- 30. 在小窗口中在現有應用程序內運行Android應用程序
是啊,但現在模擬器不會加載 –
應用和只是停留黑 –
我只是做了,但現在我的標籤慣於更新到什麼有被告知在ViewController.m做,你知道這是爲什麼? –