2011-06-29 31 views
1

我包括 「可到達性/ Reachability.m」

AppDelegate.h 

#import <UIKit/UIKit.h> 
#import "Reachability/Reachability.m" 

@class ...; 

@interface ... : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 
    ... *viewController; 
    Reachability *hostReach; 
    NetworkStatus netStatus; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController; 
@property (nonatomic) NetworkStatus netStatus; 
-(void)updateInterfaceWithReachability: (Reachability*) curReach; 

@end 


AppDelegate.m 


#import "AppDelegate.h" 
#import "ViewController.h" 

@implementation ... 

@synthesize window=_window; 
@synthesize navigationController=_navigationController; 
@synthesize netStatus; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    // Override point for customization after application launch. 
    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; 
    hostReach = [[Reachability reachabilityWithHostName:@"www.apple.com"]retain]; 
    [hostReach startNotifier]; 
    [self updateInterfaceWithReachability:hostReach]; 


    // Set the view controller as the window's root view controller and display. 
    self.window.rootViewController = self.navigationController; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

,我得到一個錯誤

ld: duplicate symbol _OBJC_IVAR_$_Reachability.localWiFiRef in /Users/../Documents/../build/.. .build/Debug-iphonesimulator/.. .build/Objects-normal/i386/..ViewController.o and /Users/../Documents/../build/.. .build/Debug-iphonesimulator/.. .build/Objects-normal/i386/..AppDelegate.o 

Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1 

如何解決這個問題呢?和它可能有什麼關係?

回答

2

您只導入頭文件。難道,

#import "Reachability/Reachability.h" 
+0

然後錯誤LD:重複的符號_OBJC_IVAR _ $ _ Reachability.reachabilityRef在/Users/vladimir/Documents/FreeLance/build/FreeLance.build/Debug-iphonesimulator/FreeLance.build/Objects-normal/i386/Reachability-6894AC99071B3187.o和/Users/vladimir/Documents/FreeLance/build/FreeLance.build/Debug-iphonesimulator/FreeLance.build/Objects-normal/i386/Reachability-A3396D425720E183.o – Vladimir

+1

您是否在使用任何第三方庫?您可能會遇到同樣的問題['here'](https://groups.google.com/forum/#!topic/asihttprequest/Mx3f__bJ2fw)。 –

+0

是的,我使用ASIHTTPRequest ,它的問題 – Vladimir

2

你必須確保你的項目文件夾包含一個Reachability.h和一個Reachability.m文件,ASIHTTPRequest圖書館無論是在它這些文件,因此添加可達庫時重複的符號錯誤。刪除重複的文件後做一個乾淨的版本

5

我有同樣的問題,因爲我使用的一個第三方庫(libPusher)已包括可達性已經。

由於該庫是預編譯的,所以我不確定該怎麼做,但只在項目中添加Reachability.h(而不是Reachability.m)。這允許我導入它並使用這個類,但是我沒有重複的符號問題。

0
  1. 從項目中刪除reachability.m的引用。
  2. 添加您需要的框架或文件(創建此問題)。
  3. 清潔和建設項目

它爲我工作。

當我嘗試在項目中添加框架,並出現此重複問題。

相關問題