3

ARC禁止s 或s中的Objective-C对象。structunion

除非您添加__unsafe_unretained这意味着它不受管理。

我想知道人们现在用什么代替structs 如果有的话?

还是您手动保留所有内容?

4

4 回答 4

5

这很简单——如果你想在结构中添加一个对象,那你就做错了。每当您需要一个结构来保存一个 obj-c 对象时,将该结构转换为一个 obj-c 对象。

于 2013-05-02T08:14:14.167 回答
4

我会像这样在一个 objc-object 中管理不同的对象:

@class MyFirst, MySecond;

@interface MyContainer : NSObject

@property (nonatomic, strong, readonly) MyFirst *firstInst;
@property (nonatomic, strong, readonly) MySecond *secondInst;

// optional: convenience initializer
+ (instancetype)containerWithFirstInst:(MyFirst *)firstInst secondInst:(MySecond *)secondInst;

@end

// required by linker: stub definition for the class declared above
@implementation MyContainer
@end


@interface SomeController : NSObject

- (void)doSomething;

@end

@implementation SomeController

- (void)doSomething {
    MyFirst *firstInstance = [[MyFirst alloc] initWithSomeParameters:...];
    MySecond *secondInstance = [[MySecond alloc] initWithSomeParameters:...];
    MyContainer *container = [MyContainer containerWithFirstInst:firstInstance secondInst:secondInstance];
    // use container as a struct (but it's definitely an object that is managed by ARC)
}

@end
于 2013-05-02T08:15:26.877 回答
1

如此处所示,实现一个静态类并伪造它的属性不是更容易

于 2016-02-23T23:26:38.257 回答
0

我在这里回答了https://stackoverflow.com/a/28845377/1570826

也许具有正确级别的人可以将这个或另一个标记为重复。

于 2015-03-10T21:50:13.020 回答