最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

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

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

@implementation MyViewController

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

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

@end

這種是混搭的 C 代碼。

當(dāng)然當(dāng) C 方法寫在 @implementation 內(nèi)也是可以的,編譯器會(huì)正確地處理。因?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 的對(duì)象傳遞給 C 代碼,這樣在 C 中便有了一個(gè)對(duì)象的引用,數(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不帶加減號(hào)方法的文章就介紹到這了,更多相關(guān)Objective-C不帶加減號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于C語言實(shí)現(xiàn)井字棋游戲

    基于C語言實(shí)現(xiàn)井字棋游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語言實(shí)現(xiàn)井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 詳談C++何時(shí)需要定義賦值/復(fù)制構(gòu)造函數(shù)

    詳談C++何時(shí)需要定義賦值/復(fù)制構(gòu)造函數(shù)

    下面小編就為大家?guī)硪黄斦凜++何時(shí)需要定義賦值/復(fù)制構(gòu)造函數(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • C語言實(shí)現(xiàn)歌手比賽系統(tǒng)

    C語言實(shí)現(xiàn)歌手比賽系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)歌手比賽系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Windows配置VSCode+CMake+Ninja+Boost.Test的C++開發(fā)環(huán)境(教程詳解)

    Windows配置VSCode+CMake+Ninja+Boost.Test的C++開發(fā)環(huán)境(教程詳解)

    這篇文章主要介紹了Windows配置VSCode+CMake+Ninja+Boost.Test的C++開發(fā)環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • C語言詳解結(jié)構(gòu)體的內(nèi)存對(duì)齊與大小計(jì)算

    C語言詳解結(jié)構(gòu)體的內(nèi)存對(duì)齊與大小計(jì)算

    C 數(shù)組允許定義可存儲(chǔ)相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng),本篇讓我們來了解C 的結(jié)構(gòu)體內(nèi)存對(duì)齊與計(jì)算大小
    2022-04-04
  • C++日期類運(yùn)算符重載方式

    C++日期類運(yùn)算符重載方式

    這篇文章主要介紹了C++日期類運(yùn)算符重載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 基于C語言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲

    基于C語言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++算術(shù)運(yùn)算符與類型轉(zhuǎn)換

    C++算術(shù)運(yùn)算符與類型轉(zhuǎn)換

    這篇文章主要介紹了C++算術(shù)運(yùn)算符與類型轉(zhuǎn)換,C++當(dāng)中提供5種基礎(chǔ)的算術(shù)運(yùn)算符,分別是加法、減法、乘法、除法和取模。下main我們就一起來看看下面文章得具體舉例與說明,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • C++實(shí)現(xiàn)矩陣對(duì)稱正交化的示例代碼

    C++實(shí)現(xiàn)矩陣對(duì)稱正交化的示例代碼

    這篇文章主要介紹了C++實(shí)現(xiàn)矩陣對(duì)稱正交化,分為python代碼和C++的eigen庫實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • C++中關(guān)鍵字const的詳細(xì)說明和使用介紹(最全)

    C++中關(guān)鍵字const的詳細(xì)說明和使用介紹(最全)

    const在C/C++中是十分重要的,如果單純理解為“常量”那么你的格局就小了,今天在這里給大家介紹一下const在C++中具體詳細(xì)的用法,需要的朋友可以參考下
    2025-03-03

最新評(píng)論

论坛| 历史| 兴文县| 营口市| 怀化市| 石屏县| 石楼县| 剑阁县| 建瓯市| 白银市| 祁东县| 南汇区| 高州市| 郴州市| 镇远县| 赤城县| 易门县| 焉耆| 曲阜市| 正蓝旗| 阜康市| 彰化县| 阜平县| 招远市| 资中县| 庐江县| 绥阳县| 东阳市| 连州市| 永城市| 乌审旗| 富裕县| 常熟市| 登封市| 庆城县| 临漳县| 松桃| 廊坊市| 固始县| 隆化县| 张掖市|