亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Objective-C不帶加減號的方法實(shí)例

 更新時間:2021年06月01日 12:08:06   作者:劉哇勇  
顯而易見的事實(shí)是,Objective-C 中,+ 表示類方法,- 表示實(shí)例方法,這篇文章主要給大家介紹了關(guān)于Objective-C不帶加減號的相關(guān)資料,需要的朋友可以參考下

前言

在Oc中,方法分為類方法和實(shí)例方法。

前置加號(+)的方法為類方法,這類方法是可以直接用類名來調(diào)用的,它的作用主要是創(chuàng)建一個實(shí)例。有人把它稱為創(chuàng)建實(shí)例的工廠方法。

前置減號(-)的方法為實(shí)例方法,必須使用類的實(shí)例才可以調(diào)用的。

但看別人代碼過程中,還會發(fā)現(xiàn)一種,不帶加減號的方法。

@implementation MyViewController

void foo(){
    printf("msg from foo...");
}

- (void)loadView {
  [super loadView];
  foo();
}

@end

這種是混搭的 C 代碼。

當(dāng)然當(dāng) C 方法寫在 @implementation 內(nèi)也是可以的,編譯器會正確地處理。因?yàn)?C 方法嚴(yán)格來說不隸屬于類,好的做法是始終寫在類實(shí)現(xiàn)的外部。

void foo(){
    printf("msg from foo...");
}

@implementation MyViewController

- (void)loadView {
  [super loadView];
  foo();
}

@end

C 中獲取 Objective-C 的數(shù)據(jù)

但如果你以為將 C 代碼寫在 @implementation 內(nèi)部就可以獲取到類里面的數(shù)據(jù),那是不現(xiàn)實(shí)的。

MyViewController.h

@interface MyViewController ()
@property NSString *someStr;
@end

MyViewController.m

@implementation MyViewController
// void foo() { printf(self.someStr); } // 🚨 Use of undeclared identifier '_someStr'
void foo() { printf(_someStr); } // 🚨 Use of undeclared identifier '_someStr'

- (void)loadView {
  [super loadView];
  self.someStr = @"some string...";
  foo();
}

@end

正確的做法是將 Objective-C 的對象傳遞給 C 代碼,這樣在 C 中便有了一個對象的引用,數(shù)據(jù)就可以正常獲取了。

MyViewController.h

@interface MyViewController : UIViewController

@property NSString *someStr;
- (void)myObjcMethod;

@end

MyViewController.m

void foo(MyViewController* obj) {
  printf("%s\n", [obj.someStr UTF8String]);
  [obj myObjcMethod];
}

@implementation MyViewController

- (void)loadView {
  [super loadView];
  self.someStr = @"some string...";
  foo(self);
}

- (void)myObjcMethod {
  NSLog(@"msg from my objc method");
}

@end

相關(guān)資源

Mixing C functions in an Objective-C class

accessing objective c variable from c function

總結(jié)

到此這篇關(guān)于Objective-C不帶加減號方法的文章就介紹到這了,更多相關(guān)Objective-C不帶加減號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++利用ImGUI繪制D3D外部菜單

    C++利用ImGUI繪制D3D外部菜單

    ImGUI 它是與平臺無關(guān)的C++輕量級跨平臺圖形界面庫,沒有任何第三方依賴,可以將ImGUI的源碼直接加到項(xiàng)目中使用。本文將利用ImGUI繪制D3D外部菜單,需要的可以參考一下
    2022-09-09
  • C++ 中類對象類型的轉(zhuǎn)化的實(shí)例詳解

    C++ 中類對象類型的轉(zhuǎn)化的實(shí)例詳解

    這篇文章主要介紹了C++ 中類對象類型的轉(zhuǎn)化的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • 內(nèi)部排序之堆排序的實(shí)現(xiàn)詳解

    內(nèi)部排序之堆排序的實(shí)現(xiàn)詳解

    本篇文章是對堆排序的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • c++中拷貝構(gòu)造函數(shù)的參數(shù)類型必須是引用

    c++中拷貝構(gòu)造函數(shù)的參數(shù)類型必須是引用

    如果拷貝構(gòu)造函數(shù)中的參數(shù)不是一個引用,即形如CClass(const CClass c_class),那么就相當(dāng)于采用了傳值的方式(pass-by-value),而傳值的方式會調(diào)用該類的拷貝構(gòu)造函數(shù),從而造成無窮遞歸地調(diào)用拷貝構(gòu)造函數(shù)。因此拷貝構(gòu)造函數(shù)的參數(shù)必須是一個引用
    2013-07-07
  • VC List Control控件如何刪除選中的記錄實(shí)例詳解

    VC List Control控件如何刪除選中的記錄實(shí)例詳解

    這篇文章主要介紹了VC List Control控件如何刪除選中的記錄實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++實(shí)現(xiàn)LeetCode165.版本比較)

    C++實(shí)現(xiàn)LeetCode165.版本比較)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode165.版本比較),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 用C++類實(shí)現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法

    用C++類實(shí)現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法

    下面小編就為大家?guī)硪黄肅++類實(shí)現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • C++的缺省參數(shù)你了解嘛

    C++的缺省參數(shù)你了解嘛

    這篇文章主要為大家介紹了C++缺省參數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Qt實(shí)現(xiàn)界面滑動切換效果的思路詳解

    Qt實(shí)現(xiàn)界面滑動切換效果的思路詳解

    這篇文章主要介紹了Qt實(shí)現(xiàn)界面滑動切換效果,主要包括設(shè)計思路及主要函數(shù)講解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • C語言常用占位符的使用小結(jié)

    C語言常用占位符的使用小結(jié)

    占位符是一種用于格式化輸出的特殊字符,通常用于 printf() 等輸出函數(shù)中,本文主要介紹了C語言常用占位符的使用小結(jié),非常具有實(shí)用價值,需要的朋友可以參考下
    2023-05-05

最新評論