use*_*064 1 c cocoa memory-management objective-c
我和一位朋友发生争执,他说我必须把autorelase放在这里:
NSURL *url = [[NSURL URLWithString:@"http://origin-www.metrolyrics.com/api/widgets/mac/seeker.php"] autorelease];
Run Code Online (Sandbox Code Playgroud)
但是当从NSURL类方法发送给我时,对象是不是自动自动释放?谢谢.
这是规则:
如果调用返回对象的方法,则:
new
alloc
retain
copy
那么你负责释放(或自动释放)返回的对象.在只有这不会是这样的时间,如果文档,否则说.您还可以在头文件中看到该方法是使用NS_RETURNS_RETAINED
宏注释的.(头文件计为文档)
记住这个的简单方法是"NARC"(new-alloc-retain-copy).
在您的示例中,由于URLWithString:
不是以new
或alloc
不包含copy
,而不是retain
,因此您不得释放返回的对象.这样做违反了内存管理准则,会导致您的应用程序崩溃(除非您在其他地方做了一些愚蠢的事情).
归档时间: |
|
查看次数: |
205 次 |
最近记录: |