Objective-C#import 混淆

标签 objective-c

我对 Objective-C 中的 #import 语句仍然有些困惑。我有一个头文件 (Common.h),其中包含一些在整个应用程序中使用的常量 NSString。到目前为止,我在 2 个类中使用了 #import "Common.h",但出现构建错误:

duplicate symbol _EX_XML_URL in /Users/username/Library/Developer/Xcode/DerivedData/projectname-ffvcivanbwwtrudifbcjntmoopbo/Build/Intermediates/projectname.build/Debug-iphonesimulator/projectname.build/Objects-normal/i386/NewsView.o and /Users/username/Library/Developer/Xcode/DerivedData/projectname-ffvcivanbwwtrudifbcjntmoopbo/Build/Intermediates/projectname.build/Debug-iphonesimulator/projectname.build/Objects-normal/i386/ViewController.o for architecture i386

EX_XML_URL 声明如下:

    //
    //  Common.h
    //  Group of common constants used through out the application

    /*
     *  Constant strings available to application
     */

    #import <Foundation/NSString.h>

    NSString* EX_XML_URL = @"http://myurl.com/xmldata"; // URL for XML data
    NSString* EX_NO_CONNECTION = @"Network not availble";                           
    NSString* EX_DEFAULT_IMAGE = @"logo.png";

我的印象是(from this post)#import 防止头文件被包含两次。我在这里缺少什么部分?

最佳答案

在您的头文件 (.h) 中,您应该只声明常量,然后您应该定义常量并在您的实现 (.m) 中分配一个值) 文件。

在 Common.h 中

extern NSString *const EX_XML_URL;

在 Common.m 中

NSString *const EX_XML_URL = @"http://myurl.com/xmldata";


如果您在 Common.m 中唯一拥有的是常量定义,那没关系,如果事情就是这样。只需确保 Common.m 包含在编译并链接到您的目标的文件中。

关于Objective-C#import 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338957/

相关文章:

ios - 在 ios 应用程序中下载带有 .m3u8 url 的视频

objective-c - 什么是 QTCaptureScreenInput?

objective-c - 将 NSNumber 与 0 进行比较不起作用?

iphone - 如何在滚动 uiscrollview 时更改图像背景?

ios - 将 CBCharacteristic 值转换为字符串

iphone - 在 Iphone Core Plot 中刷新散点图

ios - 集成和核心数据轻迁移

objective-c - 以编程方式创建的 UILabel 不会在旋转时调整大小

objective-c - 检查之前是否加载过 View Controller

ios - 将Firebase Framework添加到iOS undefined symbol