Jan*_*ann 1 sdk singleton constants nsstring ios
我有一个最奇怪的错误!在Xcode中我有一个单例,定义如下(文件是:) MyGizmoClass.h
:
NSString *plistPath;
NSString *dataDomain;
NSString *pathToChatScript;
NSString *pathToUpdates;
Run Code Online (Sandbox Code Playgroud)
和
@property (nonatomic,retain) NSString *plistPath;
@property (nonatomic,retain) NSString *dataDomain;
@property (nonatomic,retain) NSString *pathToChatScript;
@property (nonatomic,retain) NSString *pathToUpdates;
Run Code Online (Sandbox Code Playgroud)
我有一个Constants.h
文件(我#import
早在我的.pch文件中),其中包含:
#define kUserPlistName @"userPlist.plist"
#define kDataDomain @"http://www.jann.com/";
#define kPathToChatScript @"path/top/chatscript.cgi";
#define kPathToupdates @"pathtoupdates/";
Run Code Online (Sandbox Code Playgroud)
好的,到目前为止,这么好.
我的.pch文件中的顺序是这样的:
#import "Constants.h"
#import "MyGizmoClass.h"
Run Code Online (Sandbox Code Playgroud)
然后在Constants.h
文件中我这样做:
#import "FileFunctions.h"
Run Code Online (Sandbox Code Playgroud)
好的,很好的设置.这应该工作,一个有3个NSStrings的单身人士.但是当我尝试这样做时,FileFunctions.h
我在编译器中遇到一个奇怪的错误:
FileFunctions.h
[myGizmoClass setDataDomain: kDataDomain];
[myGizmoClass setPathToChatScript: kPathToChatScript];
[myGizmoClass setPathToUpdates: kPathToupdates];
[myGizmoClass setPlistPath:[[myGizmoClass libraryDir] stringByAppendingPathComponent:kUserPlistName]];
Run Code Online (Sandbox Code Playgroud)
编译结果
预期']'之前;
到底是怎么回事?我得到这个3次...一个用于setDataDomain,一个用于setPathToChatScript,一个用于setPathToUpdates.但没有错误kUserPlistName
.当我这样做时,FileFunctions.h
一切都很顺利:
[myGizmoClass setDataDomain: @"http://www.jann.com/"];
[myGizmoClass setPathToChatScript: @"path/top/chatscript.cgi"];
[myGizmoClass setPathToUpdates: @"pathtoupdates/"];
Run Code Online (Sandbox Code Playgroud)
编译结果
一切都很好.
我无法弄清楚这一点.后来(这下面4行)我做了以下几点:
[myGizmoClass setPlistPath:[[myGizmoClass libraryDir] stringByAppendingPathComponent:kUserPlistName]];
Run Code Online (Sandbox Code Playgroud)
这是有效的!为什么要削弱kUserPlistName
工作,但kDataDomain
不会?这可能很容易......但我不能,因为我的生活,看到它!
附录
我发现无论我在哪里使用kDataDomain
,setPathToChatScript
或者setPathToUpdates
在代码中我都得到了相同的结果
编译结果
预期']'之前;
错误!:(
谢谢!
不要在你的#define
s中加入分号.
编译器完全替换你所拥有的,所以这些是等价的:
[myGizmoClass setPathToUpdates: kPathToupdates];
[myGizmoClass setPathToUpdates: @"pathtoupdates/";]; // obvious syntax error
Run Code Online (Sandbox Code Playgroud)