我正在开发一个Cocoa应用程序,并且我使用常量NSStrings作为存储我的首选项的键名的方法.
我知道这是一个好主意,因为它可以在必要时轻松更改密钥.此外,它是整个'将您的数据与逻辑分离'的概念.
无论如何,是否有一种很好的方法可以为整个应用程序定义一次这些常量?我确信这是一种简单而聪明的方式,但是现在我的课程只是重新定义了他们使用的课程.
在Objective C中使用extern有多好?它确实使某些部分的编码变得容易..但它不会破坏对象的方向吗?
关于什么时候最好使用我有点困惑:
static NSString *AppQuitGracefullyKey = @"AppQuitGracefully";
Run Code Online (Sandbox Code Playgroud)
代替
#define AppQuitGracefullyKey @"AppQuitGracefully"
Run Code Online (Sandbox Code Playgroud)
我已经在C或C++中看到过这样的问题,我认为这里的不同之处在于,这是针对Objective C,利用一个对象,而在像iPhone这样的设备上,可能存在堆栈,代码空间或内存问题.我还没有掌握.
一种用法是:
appQuitGracefully = [[NSUserDefaults standardUserDefaults] integerForKey: AppQuitGracefullyKey];
Run Code Online (Sandbox Code Playgroud)
或者只是风格问题?
谢谢.
当我extern在方法或变量声明之前使用单词时,我是否将其设置为全局,因此在整个项目中可读/可写/可用?
如果我在关键字之前使用extern,那么我的项目的一部分仍然无法访问它吗?例如,仅由子类...例如当我使用"protected"时.
extern是一个C关键字,对吗?Objective-C中是否有等价物?我实际上不明白为什么他们在Objective-C项目中使用C关键字.
谢谢
我猜我只会使用UIKIT_EXTERN,如果我的项目中有可能使用该变量的C++代码.
如果是这种情况,用UIKIT_EXTERN声明所有外部可用的常量是否安全?
为什么我不再看到这个?
我有点困惑,因为我们应该在objective-c中使用FOUNDATION_EXPORT,它的目的是什么?任何人都可以用外行来解释一下吗?谢谢!
Objective-c中FOUNDATION EXPORT的用途是什么?
所以我有:
KError.h
FOUNDATION_EXPORT NSString *const KAPPErrorDomain;
enum {
KPUnexpectedError = -1,
};
Run Code Online (Sandbox Code Playgroud)
KError.m:
#import "KError.h"
NSString *const KAPPErrorDomain = @"com.kexample.myapp";
Run Code Online (Sandbox Code Playgroud)
我假设在这种情况下使用Foundation_export时,它是否能够在另一个文件中使用变量?
那么在KService.m中,我可以毫无问题地引用KAppErrorDomain吗?
objective-c ×7
cocoa ×2
extern ×2
c ×1
cocoa-touch ×1
constants ×1
declaration ×1
globals ×1
ios ×1
visibility ×1
xcode ×1