注册 登录
主题 : OC里的全局变量到底是个啥子啊!咋这么难玩呢
级别: 圣骑士
UID: 564146
精华: 0
发帖: 608
可可豆: 2256 CB
威望: 2246 点
在线时间: 1254(时)
注册时间: 2016-05-20
最后登录: 2018-12-13
0 楼:  发表于: 2018-04-12 17:03    发自: Web Page
来源于 开发环境 分类

OC里的全局变量到底是个啥子啊!咋这么难玩呢   

大神们 我想知道这么写 为嘛不成
NSString * const a = [NSString stringWithFormat:@"%@",@"八点钟"];

这么写在一个方法内部是可以的 写在方法外部就是全局变量了 咋就不行了

背景是:工程里的所有接口 全部写在一个单独类里了
.h
UIKIT_EXTERN NSString * const LoginAPI;
.m
NSString * const LoginAPI = [NSString stringWithFormat:@"http://%@/Login",@"192.168.3.12"];

现在想把这个IP单独抽出来 发现不能实现.......
级别: 圣骑士

状态: 连续签到 - [67天]
UID: 510329
精华: 0
发帖: 738
可可豆: 1086 CB
威望: 947 点
在线时间: 1067(时)
注册时间: 2015-09-30
最后登录: 2018-12-13
1 楼:  发表于: 2018-04-12 17:14    发自: Web Page
不懂你想怎么样,要不你写成宏定义不就行了~
级别: 版主

状态: 连续签到 - [463天]
UID: 594651
精华: 1
发帖: 2365
可可豆: 4979 CB
威望: 4014 点
在线时间: 1107(时)
注册时间: 2016-10-20
最后登录: 2018-12-12
2 楼:  发表于: 2018-04-12 17:21    发自: Web Page
#define 宏定义不就可以。。?

级别: 新手上路
UID: 156874
精华: 0
发帖: 49
可可豆: 49 CB
威望: 49 点
在线时间: 311(时)
注册时间: 2012-07-24
最后登录: 2018-12-01
3 楼:  发表于: 2018-04-12 19:34    发自: Web Page
NSString * const LoginAPI = @"http://192.168.3.12/Login";
知其然,知其所以然
级别: 圣骑士
UID: 564146
精华: 0
发帖: 608
可可豆: 2256 CB
威望: 2246 点
在线时间: 1254(时)
注册时间: 2016-05-20
最后登录: 2018-12-13
4 楼:  发表于: 2018-04-12 19:46    发自: Web Page
回 3楼(yuzhibokaixi) 的帖子
这样写当然没问题 令人不解的是 NSString * const LoginAPI = [NSString stringWithFormat:@"http://%@/Login",@"192.168.3.12"];这么写为什么不行
级别: 新手上路
UID: 156874
精华: 0
发帖: 49
可可豆: 49 CB
威望: 49 点
在线时间: 311(时)
注册时间: 2012-07-24
最后登录: 2018-12-01
5 楼:  发表于: 2018-04-12 20:00    发自: Web Page
回 4楼(buliceli) 的帖子
[NSString stringWithFormat:@"http://%@/Login",@"192.168.3.12"];
你这玩意不是“编译时常量(compile-time constant)”,所以编译报错
知其然,知其所以然
级别: 新手上路
UID: 470840
精华: 0
发帖: 26
可可豆: 35 CB
威望: 35 点
在线时间: 203(时)
注册时间: 2015-05-08
最后登录: 2018-11-30
6 楼:  发表于: 2018-04-12 20:58    发自: Web Page
楼主你可以参考以下方法

.h
UIKIT_EXTERN NSString * const LoginAPI;
.m
NSString * const LoginAPI = @"/Login";
接下来所有API接口在使用前,统一在一个方法中拼接后使用,例如
static NSString *baseURL = @"http://192.168.3.12";
NSString *url = [NSString stringWithFormat:@"%@%@", baseURL, LoginAPI];


还可以使用NSURL的方法进行拼接
NSURL *baseURL = [NSURL URLWithString:@"http://192.168.3.12"];
[NSURL URLWithString: LoginAPI relativeToURL:baseURL];                

AFNetworking其实用的就是NSURL的拼接方法,只是又封装了一下,baseURL可以通过 AFHTTPSessionManager 的
- (instancetype)initWithBaseURL:(nullable NSURL *)url 方法传入

级别: 新手上路

状态: 连续签到 - [5天]
UID: 520676
精华: 0
发帖: 73
可可豆: 130 CB
威望: 123 点
在线时间: 203(时)
注册时间: 2015-11-05
最后登录: 2018-12-13
7 楼:  发表于: 2018-04-13 09:08    发自: Web Page
Re:回 4楼(buliceli) 的帖子
引用
引用第5楼yuzhibokaixi于2018-04-12 20:00发表的 回 4楼(buliceli) 的帖子 :
[NSString stringWithFormat:@"http://%@/Login",@"192.168.3.12"];
你这玩意不是“编译时常量(compile-time constant)”,所以编译报错




同上。

级别: 圣骑士
UID: 564146
精华: 0
发帖: 608
可可豆: 2256 CB
威望: 2246 点
在线时间: 1254(时)
注册时间: 2016-05-20
最后登录: 2018-12-13
8 楼:  发表于: 2018-04-13 10:49    发自: Web Page
回 6楼(新手很有压力) 的帖子
原来如此 怪不得折腾半天百思不得其解啊 <编译时常量>竖楼主才疏学浅
级别: 新手上路
状态: 连续签到 - [4天]
UID: 544701
精华: 0
发帖: 10
可可豆: 29 CB
威望: 21 点
在线时间: 186(时)
注册时间: 2016-02-24
最后登录: 2018-08-13
9 楼:  发表于: 2018-04-13 11:50    发自: Web Page
用宏吧  我项目中一般是在用  虽说有点拖效率

本站内容均为本站转发,已尽可能注明出处。因未能核实来源或转发内容图片有权利瑕疵的,请及时联系本站,本站会第一时间进行修改或删除。 QQ : 3442093904

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部