ios - 从属性指针数组初始化

标签 ios objective-c arrays pointers

我正在尝试编写一个快捷方式来初始化我的自定义 UIView 的属性,而不是逐行写出每个属性,但不幸的是它没有按我预期的方式工作。

    // .h file
    @property (nonatomic, strong) UIView *view1;
    @property (nonatomic, strong) UIView *view2;
    @property (nonatomic, strong) UIView *view3;
    @property (nonatomic, strong) UIView *view4;

    // .m file
    UIView *views[] = { self.view1, self.view2, self.view3, self.view4 };
    for ( int i = 0; i < sizeof(views) / sizeof(views[0]); i++ ) {
        views[i] = [[UIView alloc] initWithFrame:self.frame];
    }

    NSLog( @"%@", self.view1 ); // prints null

C 风格的数组不允许这样做吗?

最佳答案

您对 views[] 的初始化看起来不错,但一旦您这样做了

views[i] = ...

您只是覆盖了数组的内容。但是,您没有初始化self.view1self.view2 等。尝试

NSLog(@"%@", views[0]);

明白我的意思。

我不会像下面那样做,但你可以可能会做(未经测试):

UIView **views[] = { &self.view1, &self.view2, &self.view3, &self.view4 };
for (int i = 0; i < (sizeof(views) / sizeof(views[0]); ++i)
{
    *views[i] = [[UIView alloc] initWithFrame: self.frame];
}

NSLog(@"%@", self.view1);

我宁愿一个一个初始化,不用数组。我看不出使用数组和循环有任何优势。

关于ios - 从属性指针数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726628/

相关文章:

ios - 如何识别显示为空括号的空 NSData 对象?

ios - Swift 中的单行 if 语句

ios - AutoLayout 在 ios 8 中有效但在 ios 7 中无效?

objective-c - 有什么方法可以操纵父 View Controller ,以便 subview 位于 UIPageControl 下方?

c# - 我可以在 C# 中获取和设置数组吗?

python - coremltools 无法将 XGBoost 分类器转换为 coreML 模型

ios - 创建 iOS 客户端服务器应用程序。 ASIFormDataRequest 问题

objective-c - 闲聊和 ObjectiveC 中的消息传递是否与参数中具有值类型(结构)的调用方法相同?

ios - 如何将我的 UITableViewController 中的每个项目推送到单个 UIViewController

c++ - 如何向 Global char *Array[] 添加一个元素?