我在代码中访问 NSUInteger 属性时遇到了一些问题,如下所示:
我的控制器.h
@interface MyController : UIViewController
@property (retain, nonatomic) NSArray *updatesArray;
@property (nonatomic) NSUInteger madeUpdatesCounter;
@property (nonatomic) NSUInteger allUpdatesCounter;
@end
我的控制器.m
@implementation MyController
@synthesize updatesArray;
@synthesize madeUpdatesCounter;
@synthesize allUpdatesCounter;
- (void)viewDidLoad
{
....
madeUpdatesCounter = 0;
allUpdatesCounter = [updatesArray count];
....
// Register for progress notifications
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(makeProgressChange)
name:@"MadeOneUpdateNotification"
object:nil];
}
- (void)makeProgressChange
{
madeUpdatesCounter++;
NSLog(@"Update progress: %d/%d", madeUpdatesCounter, allUpdatesCounter);
}
@end
我通过添加到 NSOperationQueue 来处理我的更新作为 NSInvocationOperation。在我发送通知的一个更新操作结束时:
[[NSNotificationCenter defaultCenter] postNotificationName:@"MadeOneUpdateNotification" object:nil];
执行上述代码后,接收通知仅执行一次,在日志中我看到如下内容:
更新进度:1/3
当我换行时:
allUpdatesCounter = [updatesArray count];
到
allUpdatesCounter = 3;
然后一切正常,我在日志中看到: 更新进度:1/3 更新进度:2/3 更新进度:3/3
在加载视图之前初始化变量 updatedArray。是这样完成的:
MyController *doUpdatesVC = [self.storyboard instantiateViewControllerWithIdentifier:@"MyController"];
doUpdatesVC.updatesArray = updatesArray;
[self presentViewController:doUpdatesVC animated:YES completion:nil];
你有什么建议或提示我在我的代码中做错了什么?