相关疑难解决方法(0)

为什么人们总是在Objective-C(即iPhone)中使用重新分配实例变量?

我总是在viewDidLoad方法中看到示例代码,而不是说,例如

someInstanceVar = [[Classname alloc] init];
Run Code Online (Sandbox Code Playgroud)

他们总是去

Classname *tempVar = [[Classname alloc] init];
someInstanceVar = tempVar;
[tempVar release];
Run Code Online (Sandbox Code Playgroud)

为什么是这样?是不是完全一样,只是更长?

iphone coding-style objective-c instance-variables

10
推荐指数
1
解决办法
471
查看次数

为什么这会造成内存泄漏(iPhone)?

//creates memory leak
  self.editMyObject = [[MyObject alloc] init];

//does not create memory leak
  MyObject *temp = [[MyObject alloc] init];
  self.editMyObject = temp;
  [temp release];
Run Code Online (Sandbox Code Playgroud)

即使您在类的dealloc方法中执行[self.editMyObject release],第一行代码也会产生内存泄漏.self.editMyObject的类型为MyObject.第二行不会导致内存泄漏.第一行是不正确还是有办法释放内存?

iphone xcode memory-management objective-c

8
推荐指数
2
解决办法
4049
查看次数

自动释放iPhone

即将结束开发iPhone应用程序,我想知道在开发iphone时使用自动释放有多糟糕.我遇到了一些相当随机的崩溃,到目前为止,除了内存使用不当之外,我无法指出它.

作为一个Cocoa新手我记得最初阅读一份指南文件,强烈建议避免自动释放,支持手动保留/释放iPhone.然而,一个更"高级"的Cocoa开发人员很早就加入进来(具有讽刺意味的是,自那以后一直放手),他们在整个地方都使用了自动释放.不可否认,我进入了"猴子看猴子做"模式,它似乎又回来困扰我(我现在是项目中唯一的开发人员).

那下一步该怎么办?在我看来,我必须分支代码并尝试通过并在可能的情况下替换自动释放代码保持我的手指交叉,我不会无意中破坏应用程序.似乎很多库调用都会导致自动释放的对象,比如stringWithFormat,以及我自己不使用alloc的任何东西.我应该注意的任何其他的getchyas和/或建议?谢谢可可大师.

iphone cocoa-touch memory-management autorelease

2
推荐指数
1
解决办法
9879
查看次数