在stackoverflow上参考这个相关的问题:
如果您创建一个常量文件,如何在目标中"链接"它,所以您不必这样做
#import "Constants.h"
Run Code Online (Sandbox Code Playgroud)
在每个文件中你使用常量?
我发现有关设置NSString常量的讨论让我按以下方式编写代码:
.h文件:
extern NSString * const kSectionHeaders;
Run Code Online (Sandbox Code Playgroud)
.m文件:
NSString * const kSectionHeaders = @"header";
Run Code Online (Sandbox Code Playgroud)
当程序运行时,它必须根据一系列NSString常量测试文本文件中的单词.
我读取内存比较应该在设置如上所述的功能时起作用:
if (property == kSectionHeaders) {...}
Run Code Online (Sandbox Code Playgroud)
不起作用:(以下工作,但它被描述为一个糟糕的解决方案(较慢,还有什么?):
if ([property isEqualToString:kSectionHeaders]){...}
Run Code Online (Sandbox Code Playgroud)
我觉得我做错了什么.但看不出来的是什么!请帮忙:-)谢谢!J.
下面的 C# 类仅用于保持常量。所以我们可以使用类名访问每个所以'Constants.DIR_ARCHIVE'将给出'Archive'。
如何在 ObjectiveC 中定义下面的 C# 类?
public class Constants
{
//Resource Directory Names
public const string DIR_ARCHIVE = "Archive";
public const string DIR_DEPARTMENTS = "Departments";
public const string DIR_FORMS = "Forms";
public const string DIR_GOAL_TRACKING = "GoalTracking";
public const string DIR_ROLES = "Roles";
public const string DIR_HOMEWORK = "HomeWork";
public const string DIR_POSTINGS = "Postings";
public const string DIR_SIGNUP = "SignUp";
public const string DIR_SITE_CONFIG = "System";
public const string DIR_PORTFOLIO = "Portfolio";
public const string DIR_MEMBERDEFINITION = …Run Code Online (Sandbox Code Playgroud) 我一直在阅读关于此的不同内容,这看起来很危险.有人可以告诉我正确的模式来定义可以全局使用的通知字符串吗?我尝试过的所有内容都会导致链接器错误.例如,在我的GlobalVariables单例中,我添加了:
#import <Foundation/Foundation.h>
extern NSString *kMPTimeChanged;
@interface GlobalVariables : NSObject etc.
Run Code Online (Sandbox Code Playgroud)
然后在init中:
@implementation GlobalVariables
#pragma mark Singleton Methods
+ (id)sharedGlobals {
static GlobalVariables *sharedGlobals = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedGlobals = [[self alloc] init];
});
return sharedGlobals;
}
- (id)init {
if (self = [super init]) {
kMPTimeChanged=@"kMPTimeChanged";
return self;
}
Run Code Online (Sandbox Code Playgroud)
它没有构建,我有多个错误.
有没有办法在Objective C中使用case/switch语句中的全局int常量?这里的技术(http://stackoverflow.com/questions/538996/constants-in-objective-c)让我可以在任何地方访问常量,但不允许我将它们放入switch语句中.
在.h
FOUNDATION_EXPORT const int UNIT_IDLE;
FOUNDATION_EXPORT const int UNIT_DEFEND;
Run Code Online (Sandbox Code Playgroud)
在.m
int const UNIT_IDLE = 0;
int const UNIT_DEFEND = 1;
Run Code Online (Sandbox Code Playgroud)
错误是"表达式不是整数常量表达式"
我想定义一些常量,并考虑使用#define构造,如下所示:
#define kUpdateTeamNotification CFSTR("kUpdateTeamNotification")
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我去使用它时:
[[NSNotificationCenter defaultCenter] postNotificationName:kUpdateTeamNotification object:team];
Run Code Online (Sandbox Code Playgroud)
我得到一个不兼容的指针类型警告.我的印象CFSTR基本上与@""字符串相同.我理解错了吗?
我正在处理一个 swift 项目,并且我已经创建了 MyProjectName-Bridging-header.h 在这个桥中,我添加了一个包含多个常量的 .h 文件
#define constantName VALUE
Run Code Online (Sandbox Code Playgroud)
我需要知道如何在我的 swift 文件中使用这些常量?
我正在尝试按照这里的答案将一些常量链接到我在XCode中的iOS应用程序.我创建了一个这样的Constants.h头文件:
// Constants.h
// myApp
extern NSString * const tumblrConsumerKey;
extern NSString * const tumblrConsumerSecret;
Run Code Online (Sandbox Code Playgroud)
和一个这样的Constants.m实现文件:
// Constants.m
// myApp
#import "Constants.h"
NSString * const tumblrConsumerKey = @"keyiskey";
NSString * const tumblrConsumerSecret = @"secret";
Run Code Online (Sandbox Code Playgroud)
然后我将它添加到myApp-Prefix.pch预编译头的顶部:
// Prefix header for all source files of the
// 'myApp' target in the 'myApp' project
//
#import <Availability.h>
#import "Constants.h"
Run Code Online (Sandbox Code Playgroud)
现在我在Constants.h文件中的声明extern NSString * const等的行中出现错误:
Expected '=', ',', ';', 'asm' or '__attribute__' before
'*' token in /Users/me/Documents/iPhone Programs/myApp/myApp/Constants.h
Run Code Online (Sandbox Code Playgroud)
看起来我的Constants.m文件已添加到myApp的目标中.我究竟做错了什么?
我知道使用静态常量定义常量比使用#define 更好。
但是在这个SO question 中,为什么**extern** static const在头文件中使用,并编写另一个 m 文件来实际定义该值。为什么不只static int const kMyVar = 1;在头文件中使用而不再使用m 文件呢?
我需要在我的应用程序中声明两个不同的常量,一个是简单的字符串,另一个需要是uint32.
我知道有两种不同的声明常量的方法如下
#define VERSION 1; //I am not sure how this works in regards to uint32.. but thats what I need it to be.
Run Code Online (Sandbox Code Playgroud)
和
NSString * const SIGNATURE = @"helloworld";
Run Code Online (Sandbox Code Playgroud)
有没有办法做一个应该是uint32的版本,如下面的nsstring decliration?
比如说像
UInt32 * const VERSION 1;
Run Code Online (Sandbox Code Playgroud)
如果是这样的话?如果没有,我如何确保#define版本的类型为uint32?
任何帮助,将不胜感激
我正在编写一个iPhone应用程序,并按照此问题中的建议将常量排列在Constants.h和Constants.m文件中:Objective-C中的常量.
我的问题是,如果我在Constants.h中定义一个typedef枚举,并想在我的一个.h文件中声明该typedef枚举的属性,那么实现它的正确方法是什么?我是否需要将constdef枚举移出Constants.h和类.h文件?似乎打败了拥有全局常量文件的目的......