我已经为我的应用程序(分配,保留,发布等等)的记忆挣扎了一段时间,但是有些事我还没理解。
如果我在.h文件中声明:
int ex1;
char ex2[10];
这些变量的生命周期是多少?想象一下,我想在我的.m代码的不同部分使用这些变量,在methodA中我将分配一个值,而在methodB中,我将要读取它们。
我可以100%确定变量不会在我的.m的任何时刻发布吗?
由于
答案 0 :(得分:1)
因为他们是原始人,是的。它们不会被保留或释放。如果要将它们声明为属性,则应将它们声明为:
@property (assign) int ex1;
和
@property (assign) char ex2[10];
然后在您的.m文件中@synthesise
正常使用[myObject ex1]
和[myObject ex2]
在Objective C中,这个想法非常简单 -
显然,这些规则适用于指向对象的指针,而不是像int或char这样的原语。
答案 1 :(得分:1)
您不应该在.h文件中声明变量,因为这会导致链接器错误。
而是你应该在.h文件中对它们进行外部声明,并在.c / .m文件中正确声明它们。例如:
// In the .h
extern int ex1;
extern char ex2 [10];
// In the .c/.m
int ex1;
char ex2;
原因是多个.c文件可以包含您的标题,并且您将拥有相同变量的多个定义。
另外,请记住Objective-C是C的严格超集。这意味着在C中工作的任何东西在Objective-C中都以相同的方式工作。您只需担心Objective-C对象的保留/释放/自动释放,基本上是使用此语法的任何内容:
@interface MyObject : NSObject
{
// My vars
}
@end