在Stephen Kochan的Objective-C第6版编程中,他说你可以创建一个指向数组的指针,但是我得到了Xcode错误。我的愿望是在一个类中创建一个可变数组,但能够在不同的类中访问它。这是我的简化代码,我在其中创建数组,然后尝试设置指向它的指针,然后返回值:
-(NSUInteger) makeArray {
NSArray *members = [NSArray arrayWithObjects:@"Keith", nil];
NSUInteger *membersPtr;
membersPtr = members;
return *monthNamesPtr;
}
我在第3行中遇到了两个错误(membersPtr = members;
- 这是正确的,所以我认为自书写之后规则已经改变了)。错误是:
ARC不允许将Objective-C指针隐式转换为'NSUInteger'(又名'unsigned long *')
从NSArray * _strong'
分配给'NSUInteger *'(又名无符号long *')的指针类型不兼容
答案 0 :(得分:1)
我想你可能想要这样做,它不会有任何错误
-(NSUInteger) makeArray {
NSArray *members = [NSArray arrayWithObjects:@"Keith", nil];
NSUInteger *membersPtr;
membersPtr = (NSUInteger)members;
return *membersPtr;
}
我认为 Singleton 是更好的方法! 你可以创建类并添加它:
+ (instancetype)sharedInstance
{
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
答案 1 :(得分:0)
我猜你是来自main
背景,这就是为什么你试图通过服用NSUInteger来模拟main
类的东西。让我简单解释一下:
main
这里C
是一个指向NSArray对象(Objective-C集合类型)的指针,它包含" Keith"作为第一个收集项目。现在,如果需要将指针返回到此数组,只需将方法更改为:
int *ptr