gpt4 book ai didi

objective-c - 使用包含 ObjC 对象的 C 结构?

转载 作者:太空狗 更新时间:2023-10-30 03:31:47 25 4
gpt4 key购买 nike

我在 objc 中使用 C 结构,我创建了一个函数来组装结构,就像来自 Cocoa API 的结构一样。事情是这个结构不像 NSRect o NSPoint 这个结构打包 objc 对象所以我在这里看到潜在的内存泄漏。我是否需要提供“释放”结构的功能?

我没有创建 ISKNewsCategory 类,因为不会有任何行为,但你认为这是一个好方法,还是我应该定义类,即使没有任何行为?

typedef struct ISK_NewsCategory {
NSString *name;
NSString *code
} ISKNewsCategory;

NS_INLINE ISKNewsCategory ISKMakeNewsCategory(NSString *name, NSString *code) {
ISKNewsCategory category;
category.name = [name retain];
category.code = [code retain];
return category;
}

最佳答案

一般来说,创建一个简单的容器类会好得多。这样所有的内存管理都很容易,您可以在标准 Cocoa 容器类中使用该对象,而无需在 NSValue 或其他任何东西中包装结构。

唯一可以接受以这种方式使用结构的情况是,如果您的代码对性能极为关键,而对象开销可能会成为问题。

@interface ISKNewsCategory : NSObject
{
NSString *name;
NSString *code;
}
@property (copy) NSString *name;
@property (copy) NSString *code;
@end

@implementation ISKNewsCategory
@synthesize name,code;
- (void)dealloc
{
self.name = nil;
self.code = nil;
[super dealloc];
}
@end

关于objective-c - 使用包含 ObjC 对象的 C 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2488877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com