• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 访问器方式与静态 int 和静态 NSArray 不同

[复制链接]
菜鸟教程小白 发表于 2022-12-13 01:52:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在此演示代码下方,流程的逻辑并不重要。

@interface ViewController ()<UITableViewDataSource, UITableViewDelegate>

@end

static int channelIndex = 0;
static NSMutableArray *channelsDataArray = nil;

@implementation ViewController
    - (void)getSomething {
            // Append the desiredValuesDict dictionary to the following array.
            if (!self.channelsDataArray) {
                self.channelsDataArray = [[NSMutableArray alloc] initWithObjects: desiredValuesDict, nil];
            } else {
                [self.channelsDataArray addObject:desiredValuesDict];
                NSLog(@"channelsDataArray : %@", self.channelsDataArray);
            } 

            // This will print the result I expected.
            NSLog(@"channelIndxBefore: %i", channelIndex);
            ++channelIndex;
            NSLog(@"channelIndxAfter: %i", channelIndex);
    }


@end

我的问题是,如果我以这种方式调用 channelIndex “self.channeIndex++”,它会出现警告:

Format specifies type 'int' but the argument has type 'NSInteger *' (aka 'long *')

如果我将这种方式称为“channelIndex++”,它将正常工作。

奇怪的是,如果我只是调用的话,我还有另一个静态 NSMutableArray channelsDataArray

[self.channelsDataArray addObject:desiredValuesDict];

它将对象添加到 var 中会正常工作。但如果我只是使用

[channelsDataArray addObject:desiredValuesDict];

它不会显示任何警告,但 channelsDataArray 将为 nil,并且无法将 desiredValuesDict 分配给它。

问题:什么时候应该添加self前缀?为什么都是静态变量,一个要加self,另一个不用?



Best Answer-推荐答案


[原评论:]

错误提示您有另一个 @interface(在 .h 文件中)并且您在该文件中声明了一个与您在引用文件中声明的全局变量。您需要删除其中一个,这取决于您的需要。

HTH

关于ios - 访问器方式与静态 int 和静态 NSArray 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44754822/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap