English 中文(简体)
重发回式包裹
原标题:Releasing a returned-by-reference NSString causes crash

如下:

@implementation Exp
- (int) func:(NSString**) dpStr
{
    //------
    *dpStr = [self func_2];
    //------
}

Now it is being called like this:

int main ()
{
   NSString * str = [[NSString alloc] init];
   int retCode = [Exp func:&str];
   // <----- Now here I m able to access value returned by func ------->

   [str release];    //  <--- It is crashing here 
}

谁能解释为什么它坠毁?

最佳回答

这分配了一个空洞:

NSString * str = [[NSString alloc] init];

www.un.org/Depts/DGACM/index_french.htm 带有一部新载体,显然已经自动发布; 旧价值str 泄漏<>。

int retCode = [Exp func:&str];

飞往<<>>新>>>>>>>的星号,其中:<>,>,>,<>,>,>

[str release];

此处不需要主要<代码>+alloc/-init,也不需要跟踪<代码>-release<>/code>,因为标语由<代码>-func:提供。 你们都需要:

NSString *str = nil;
[Exp func:&str];
// use str normally

更好的办法是修改<代码>-func:,以便直接返还:

NSString *str = [Exp func];
// use str normally

Then there is no need to pass it by address.

问题回答

暂无回答




相关问题
List Contents of Directory in a UITableView

I am trying to list the contents of Ringtones directory in a TableView, however, I am only getting the last file in the directory in ALL cells, instead of file per cell. This is my code: - (...

iPhone NSUserDefaults persistance difficulty

In my app i have a bunch of data i store in the NSUserdefaults. This information consists of an NSObject (Object1) with NSStrings and NSNumbers and also 2 instances of yet another object (Object2). ...

Writing a masked image to disk as a PNG file

Basically I m downloading images off of a webserver and then caching them to the disk, but before I do so I want to mask them. I m using the masking code everyone seems to point at which can be found ...

Resize UIImage with aspect ratio?

I m using this code to resize an image on the iPhone: CGRect screenRect = CGRectMake(0, 0, 320.0, 480.0); UIGraphicsBeginImageContext(screenRect.size); [value drawInRect:screenRect blendMode:...

Allowing interaction with a UIView under another UIView

Is there a simple way of allowing interaction with a button in a UIView that lies under another UIView - where there are no actual objects from the top UIView on top of the button? For instance, ...