我刚开始学习(过去几天一直在阅读),这里有一些问题,希望有人能够回答。
1. 构造函数代码中的(self!=nil)检查。为什么要这样做?是为了防止意外访问包裹在其中的“仅运行一次”的代码吗?这种意外访问可能来自哪里?这样做表明我对正在发生的事情没有控制。
- (id)init {
self = [super init]
if (self != nil) {
// Code..
}
return self;
}
2. 静态方法返回时不需要释放任何东西是怎么回事?(或者这是我得到的想法)
3. 如何理解str = @“Hi there!”和str = [[NSString alloc] initWithString:“Hi there!”]之间的区别?据我所知,您必须释放使用第二种方法获得的str,但不用于第一种方法?如果是这样,第一种方法何时被释放?哪个更可取(不考虑输入长度)?
str = [[NSString alloc] initWithString:@"Hi there!"];
4. 如果iphone没有垃圾回收,autorelease是什么?我注意到在main.m中创建了一个“autorelease池”。[myObject autorelease];是将myObject添加到最近的包装“autorelease池”的一种方式,以释放它吗?基本上,这是一些魔法,可以避免自己释放它?为什么使用它?
好的,目前为止就是这样。感谢任何答案!