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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Objective-C语法之static关键字的那些事儿(六)

發布時間:2024/4/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Objective-C语法之static关键字的那些事儿(六) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Objective-C語法之static關鍵字的那些事兒








?? ? ? 學習過Java 或者 C 語言的朋友應該很清楚static關鍵字吧?在某個類中聲明一個static 靜態變量, 其他類中想使用它或者修改它不用new 這個對象 ,直接使用它的類名方可直接拿到這個靜態變量的對象,遍可以在其他類中任意修改這個變量的數值。 ?? ? ? ? ?? ? ? ?在Objective-C 的語法中聲明后的static靜態變量在其他類中是不能通過類名直接訪問的,它的作用域只能是在聲明的這個.m文件中 。不過可以調用這個類的方法間接的修改這個靜態變量的值。MOMO通過一個例子詳細的解析一下static關鍵字的使用。

類的創建方法就不多說了,之前的文章有寫過。
MyClass.h 警告: ?static 寫在interface外面編譯是沒有錯誤的,但是編譯器會報警告,這么說這樣的寫法是不被編輯器認可的。 錯誤:static 寫在interface里面會直接報錯,顯然這樣的語法是不被認可的。

+(void) addCount; ?各位盆友們注意一下這法方法前面的+號。 它的意思是標致這個方法為靜態方法,標志+號后不用創建這個對象通過類名可以直接調用這個靜態方法。 而之前方法前用過的-號,標志-號后的方法必須通過本類的對象或者在本來中才可以使用。


#import <Foundation/Foundation.h> //警告 //static int sCount ; @interface MyClass : NSObject { //錯誤的寫法 //static int sCount; } +(void) addCount; @end


MyClass.m
?? ? ? static關鍵字聲明的變量必須放在implementation外面,或者方法中,如果不為它賦值默認為0,它只在程序開機初始化一次。 +(void)addCount 因為標識了+號,所以這個方法無需使用這個類的對象調用。直接使用類名方可調用這個方法。

#import "MyClass.h" static int sCount = 100; @implementation MyClass +(void)addCount { sCount ++; NSLog(@"靜態整型變量的值為:%d", sCount); } @end
main.m
無需alloc這個對象,直接使用MyClass類名方可直接調用addCount方法。
#import <UIKit/UIKit.h> #import "MyClass.h" int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //添加我們的測試代碼 [MyClass addCount]; int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal; }

運行這個程序,初始化賦值為100 ,調用方法的時候++,所以打印出來的數值為101。






MyClass.m

將static整型變量定義在方法中,并且為其賦值100。
#import "MyClass.h" @implementation MyClass +(void)addCount { static int sCount = 100; sCount ++; NSLog(@"靜態整型變量的值為:%d", sCount); } @end

main.m

循環5次調用這個方法,看看結果是什么樣字,結果肯定是101吧。。
#import <UIKit/UIKit.h> #import "MyClass.h" int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //添加我們的測試代碼 for (int i =0; i < 5; i++) { [MyClass addCount]; } int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal; }

程序員不要相信任何人說的任何有關程序的話,一定相信自己,相信自己眼睛看到的一切,哇咔咔~~
可見即使將static靜態變量寫在方法中,它的初始化也是在程序開機時,程序一旦啟動以后static是不能在創建的。所以程序在這里調用了5次這個方法,sCount的值并沒有因為重新創建static sCount而改變,而是將sCount的值一直存在內存中。






static關鍵字在任何語言中都是非常重要的,它有優點也有缺點,善用static 關鍵字是一個不錯地選擇哦,哇咔咔~?
前幾天上不了網 悲劇啊~~ 今天去按摩店 針灸 拔火罐 按摩 刮痧 ?太爽了,MOMO向廣大盆友們問好,有什么都沒有有一個好身體重要,多去健身 保健 鍛煉身體 搞IT的盆友們 ?你們懂得 嘿嘿。。?





轉載于:https://www.cnblogs.com/xuanyusong/archive/2011/09/24/2238557.html

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的Objective-C语法之static关键字的那些事儿(六)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。