Macos 要在类中使用以访问变量的类型

Macos 要在类中使用以访问变量的类型,macos,cocoa,class,memory,automatic-ref-counting,Macos,Cocoa,Class,Memory,Automatic Ref Counting,我有一个类myClass,其中.h我有: @property (strong) NSString *mystring; 我有一个父类,在其中访问“mystring”变量。但是,每次我访问它与另一个字符串进行比较时,消耗的内存都在增加(使用ARC) myClass*oneClass=; 对于(int i=0;每次执行时,我会多占用10 MB内存,并且不会释放内存)。 请不要看逻辑(“oneString”正在更改)。我应该如何在类中声明mystring(强vs赋值vs弱?),以便不消耗内存? 谢谢

我有一个类myClass,其中.h我有:

@property (strong) NSString *mystring;
我有一个父类,在其中访问“mystring”变量。但是,每次我访问它与另一个字符串进行比较时,消耗的内存都在增加(使用ARC)

myClass*oneClass=;
对于(int i=0;每次执行时,我会多占用10 MB内存,并且不会释放内存)。
请不要看逻辑(“oneString”正在更改)。我应该如何在类中声明mystring(强vs赋值vs弱?),以便不消耗内存?


谢谢。

你怎么知道内存使用不是由
bla bla bla
引起的?使用仪器看看到底发生了什么;不要猜测。bla bla实际上是一个“中断”。我做了一些检查,用@“另一个字符串”替换了oneClass.mystring,在这种情况下内存不会增加。很酷,好的。因此我有两个建议:(1)声明
(复制,非原子)
而不是
(强)
,因为这是更好的做法;(2)将
if
行(当然包括它的花括号)包装在
自动删除池{}
看看这是否有帮助。顺便说一句,另一件奇怪的事是你说
myClass*oneClass=
。但是
myClass*
不是指向类的指针,而是指向实例的指针。不是吗?我的意思是,你不是在类对象上声明属性,对吗?它是实例变量。Objective-C没有类变量。为什么使用“myClass*oneClass=”这似乎是多余的。为什么不使用指向现有实例的指针?
           myClass *oneClass=<pointer to existing class>;

           for (int i=0;i<1000;i++)
           {

                if ([oneClass.mystring isEqualToString:@"oneString"])
                {
                   // do nothing
                }
            }