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

次のように、1 つの 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 に答える
0

ここで答えましたhttps://stackoverflow.com/a/28845377/1570826

適切なレベルの誰かが、これまたは他のものを重複としてマークできるかもしれません。

于 2015-03-10T21:50:13.020 に答える