日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

何时使用[self release]

發(fā)布時間:2025/3/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 何时使用[self release] 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這樣的語句

  • [self release];
  • 乍看上去讓人很困惑。

    從release方法本身的作用上來說,就是給self的引用技術(shù)減一,就像release對其他對象所做的一樣。

    一般來說,唯一用到,也是最合適使用


  • [self release];
  • 這一寫法的地方是在initXXX方法中。
    在初始化方法中創(chuàng)建對象失敗,并需要返回nil,同時銷毀剛剛創(chuàng)建的對象的時候。


    比如,要求初始化方法在調(diào)用是必須提供合適的參數(shù)時,可以這樣使用


  • [self release];

  • eg:


  • - (id)initWithFoo:(Foo *)foo {
  • if (!foo) {//foo is required to be non-nil!
  • [self release];
  • return nil;
  • }
  • //proceed with initialization
  • return self;
  • }


  • 在fmdb的隊列初始化方法中也有同樣的應(yīng)用:

  • - (id)initWithPath:(NSString*)aPath {
  • self = [super init];
  • if (self != nil) {
  • _db = [FMDatabase databaseWithPath:aPath];
  • FMDBRetain(_db); //在非arc環(huán)境中等于[_db retain]
  • if (![_db open]) {
  • NSLog(@"Could not create database queue for path %@", aPath);
  • FMDBRelease(self); //在非arc環(huán)境中等于[self release]
  • return 0x00; //返回空
  • }
  • _path = FMDBReturnRetained(aPath);
  • _queue = dispatch_queue_create([[NSString stringWithFormat:@"fmdb.%@", self] UTF8String], NULL);
  • }
  • return self;
  • }


  • 其他情況下幾乎不用考慮

    [self release];

    這種用法。

    歡迎加群互相學(xué)習(xí),共同進(jìn)步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,轉(zhuǎn)載請注明出處!









    本文轉(zhuǎn)自張昺華-sky博客園博客,原文鏈接:http://www.cnblogs.com/sunshine-anycall/p/4149043.html,如需轉(zhuǎn)載請自行聯(lián)系原作者

    總結(jié)

    以上是生活随笔為你收集整理的何时使用[self release]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。