0
下面的方法需要一个双指针NSString
并用值填充此,如下所示:释放返回的按引用的NSString导致崩溃
@implementation Exp
- (int) func:(NSString**) dpStr
{
//------
*dpStr = [self func_2];
//------
}
现在它被称为是这样的:
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
}
任何人都可以解释为什么它崩溃?
+1为更好的和详细的解答 – MByD
如果我的NSMutableString取代的NSString和功能 做如下 - (INT)FUNC:(**的NSMutableString)dpStr { ------ [* dpStr setString:[self func_2]]; ------ } 然后我可以使用[str release]释放内存。 这个乐趣是在库中定义的,我从我的应用程序中调用这个乐趣,它与此库静态链接 推荐哪种方法... – macdev30
推荐的方法是我在我的答案中描述的。在Objective-C中,你不需要为字符串等提供缓冲区。操作系统通常会为您处理它。 –