相关疑难解决方法(0)

关于Objective-C项目中使用的extern的3个问题

  1. 当我extern在方法或变量声明之前使用单词时,我是否将其设置为全局,因此在整个项目中可读/可写/可用?

  2. 如果我在关键字之前使用extern,那么我的项目的一部分仍然无法访问它吗?例如,仅由子类...例如当我使用"protected"时.

  3. extern是一个C关键字,对吗?Objective-C中是否有等价物?我实际上不明白为什么他们在Objective-C项目中使用C关键字.

谢谢

c objective-c extern globals

24
推荐指数
2
解决办法
2万
查看次数

"extern const"vs"extern"only

我已经看到了两种创建全局变量的方法,有什么区别,你什么时候使用它们?

//.h
extern NSString * const MyConstant;

//.m
NSString * const MyConstant = @"MyConstant";
Run Code Online (Sandbox Code Playgroud)

//.h
extern NSString *MyConstant;

//.m
NSString *MyConstant = @"MyConstant";
Run Code Online (Sandbox Code Playgroud)

constants global-variables objective-c extern

18
推荐指数
1
解决办法
1万
查看次数

在Objective-C代码中使用extern"C"的链接器错误

我正在尝试创建一些可以从iPhone应用程序中的Objective-C和C++代码调用的实用程序函数.我有第三方C++类,无法编译为ObjectiveC++(.mm).我有一个头文件声明我的函数,然后是.c文件定义它们.我已检查拼写错误三倍,但由于某种原因,我的链接器无法找到任何函数的定义.

这是C帮助函数的标题:

#ifndef FILE_LOADER_H
#define FILE_LOADER_H

#if __cplusplus
extern "C" {
#endif

void * loadDataFromFile(const char * szFilename, bool bDocument);
void * loadImageFromFile(const char * szFilename, bool bDocument);
void loadMeshFromFile(const char *szFilename, void* pMesh);

#if __cplusplus
}   // Extern C
#endif

#endif
Run Code Online (Sandbox Code Playgroud)

这是.c文件:

#include "FileLoader.h"
#include <objc/objc.h>
#include <objc/message.h>
#include <Foundation/Foundation.h>


void * loadDataFromFile(const char * szFilename, bool bDocument)
{
    Class loaderClass = NSClassFromString(@"Loader");
    void * pReturnVal = objc_msgSend(loaderClass,   NSSelectorFromString(@"loadDataFromFile:document"), szFilename, bDocument);
    return pReturnVal;
    //return [Loader loadDataFromFile:szFilename document:bDocument];
}
void …
Run Code Online (Sandbox Code Playgroud)

c c++ linker objective-c extern

4
推荐指数
1
解决办法
8136
查看次数

链接器错误:未定义的符号,未找到符号

我收到这些Apple Mach-O Linker错误,我不知道如何阅读这些内容.在我的项目中导入"CLCredentialHeader.h"和"CLCredentialHeader.m"后出现这些错误.

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_SFHFKeychainUtils", referenced from:
      objc-class-ref in CLCredentialHandler.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

xcode linker ios

2
推荐指数
2
解决办法
9312
查看次数

标签 统计

extern ×3

objective-c ×3

c ×2

linker ×2

c++ ×1

constants ×1

global-variables ×1

globals ×1

ios ×1

xcode ×1