ios - 访问器方式与静态 int 和静态 NSArray 不同
<p><p>在此演示代码下方,流程的逻辑并不重要。 </p>
<pre><code>@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 = [ initWithObjects: desiredValuesDict, nil];
} else {
;
NSLog(@"channelsDataArray : %@", self.channelsDataArray);
}
// This will print the result I expected.
NSLog(@"channelIndxBefore: %i", channelIndex);
++channelIndex;
NSLog(@"channelIndxAfter: %i", channelIndex);
}
@end
</code></pre>
<p>我的问题是,如果我以这种方式调用 channelIndex “self.channeIndex++”,它会出现警告:</p>
<blockquote>
<p>Format specifies type 'int' but the argument has type 'NSInteger *'
(aka 'long *')</p>
</blockquote>
<p>如果我将这种方式称为“channelIndex++”,它将正常工作。</p>
<p>奇怪的是,如果我只是调用的话,我还有另一个静态 NSMutableArray channelsDataArray </p>
<pre><code>;
</code></pre>
<p>它将对象添加到 var 中会正常工作。但如果我只是使用</p>
<pre><code>;
</code></pre>
<p>它不会显示任何警告,但 channelsDataArray 将为 nil,并且无法将 desiredValuesDict 分配给它。</p>
<p>问题:什么时候应该添加self前缀?为什么都是静态变量,一个要加self,另一个不用?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p><em>[原评论:]</em> </p>
<p>错误提示您有另一个 <code>@interface</code>(在 <code>.h</code> 文件中)并且您在该文件中声明了一个与您在引用文件中声明的全局变量。您需要删除其中一个,这取决于您的需要。</p>
<p>HTH</p></p>
<p style="font-size: 20px;">关于ios - 访问器方式与静态 int 和静态 NSArray 不同,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/44754822/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/44754822/
</a>
</p>
页:
[1]