Objective c 目标C:包含单个NSInteger的类是否需要释放?

Objective c 目标C:包含单个NSInteger的类是否需要释放?,objective-c,memory,Objective C,Memory,我有一个包含单个NSInteger属性的类 @interface myTag @property (nonatomic) NSInteger tag; @property (nonatomic) NSInteger index; @end 我喜欢在代码中使用它 mytag = [[myTag alloc] init]; int num = (int)mytag.tag; [mytag release]; NSLog(@"num = %d",num); 我的问题是 在objc

我有一个包含单个NSInteger属性的类

@interface myTag
    @property (nonatomic) NSInteger tag;
    @property (nonatomic) NSInteger index;
@end
我喜欢在代码中使用它

mytag = [[myTag alloc] init];
int num = (int)mytag.tag; 
[mytag release];
NSLog(@"num = %d",num);
我的问题是

  • 在objc中,所有类都在指针中运行,这意味着mytag.tag返回 指针
  • 那么num是无效的
  • 我真的需要调用[mytag release],因为nsinteger不是吗 真正的类,只是int的typedef
  • 但如果我不调用release,Xcode分析器会警告我内存泄漏

  • 否,mytag.tag返回NSInteger变量tag的值
  • num是有效的
  • 你需要调用[mytag release],因为你要分配它。目标C内存管理的简单规则是,无论你分配/保留/复制什么,你都需要释放
  • 还有第三个问题,您要问的是mytag变量,它不是NSInteger,而是mytag类的一个实例


    给你一个小建议,在开始项目之前,请花些时间阅读objective C内存管理基础知识(我必须说,这并不容易)…苹果是一个很好的起点。。本教程提供了有关ARC的大量信息。

    @Aberrant不是该教程的副本。.OP询问是否需要释放包含NSInteger的类。.哦哦哦,等等,myTag是类,小写字母m让我困惑。好的,没有重复,删除注释。@lerosua还有时间,请务必阅读