亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

objective-c語法快速過(2)

2019-11-14 19:30:38
字體:
來源:轉載
供稿:網友

oc類的聲明和定義的常見錯誤

1、只有類的聲明,沒有類的實現

2、漏了@end

3、@interface和@implementation嵌套,也就是@interface或者@implementation和@end必須成對出現!兩者中間不能嵌套任何別的。

4、成員變量沒有寫在括號里面

5、方法的聲明寫在了聲明的大括號里面,或者方法的實現寫在了聲明里。這都是不對的。

6、忘記了:NSObject

7、想直接修改類成員變量,但是沒有設置為@public

8、類的聲明里的實例變量,不能在聲明的時候初始化。

9、不能把成員變量當做c語言的變量,比如加static,不對!類的聲明里只能寫類的成員變量名

10、記?。悍椒ㄊ欠椒ǎ瘮凳呛瘮?,也不能給方法加比如static。沒有這個東西

11、成員變量不能在{}中進行初始化、默認不能被直接拿出去訪問

12、方法不能當做函數一樣調用或者聲明,對象方法只能是對象來調用

13、類的實現可寫在main函數的后面,只要在類的聲明后面就行了

14、記?。簅c里對象方法名包含冒號,oc不允許方法名一樣,-或者+不是方法名

OC方法和函數的區別

1、OC方法只能聲明在@interface和@end之間,只能實現在@implementation和@end之間。也就是說OC方法不能獨立于類存在

2、C函數不屬于類,跟類沒有聯系,C函數只歸定義函數的文件所有

3、C函數不能訪問OC對象的成員

4、低級錯誤:方法有聲明,但是實現的時候寫成了函數

5、oc的函數可以寫在文件的任何位置(除@interface和@end之間除外,可以寫在類的實現里),歸文件所有

OC的方法使用注意

1、方法只有聲明,沒有實現(這是經典錯誤

2、方法沒有聲明,只有實現(編譯器警告,但是能調用,OC的弱語法)

3、編譯的時候:訪問沒有的成員變量直接報錯,訪問沒有的方法,只是警告,弱語法

4、沒有@interface,只有@implementation,也能成功定義一個類

@implementation Car : NSObject{    @public    int wheels; // 輪子    int speed; // 時速}//方法就不用聲明了,直接在類的實現里寫定義即可- (void) run{    NSLog(@"%i個輪子,%i時速的車子跑起來了", wheels, speed);}@end

類里涉及到聲明性別,時間等

如果用布爾類型定義性別,不太好,容易讓外人搞混,不利于團隊的代碼共享。如果屬性只有幾個固定的取值,那么最好用枚舉。

對于年月日的聲明不要寫成這樣,很傻,很累,

  //int year;    //int month;    //int day;

 使用結構體

  Date birthday;//生日結構  double weight;//體重  Color favourColor;//最喜歡的顏色枚舉
Sex sex;//性別枚舉

程序代碼如下:

  1 /* 設計一個學生類  2  類名:學生  3  成員變量:姓名,性別,生日,體重,喜歡的顏色,每個學生都養一條狗(狗也是一個對象)  4  方法:吃飯,鍛煉,遛狗(讓狗run),喂狗(讓狗eat)  5 */  6 #import <Foundation/Foundation.h>  7 typedef enum  8 {  9     //標準寫法,枚舉常量名字含有枚舉類型的名字,一目了然,容易閱讀 10     SexMan,//0 11     SexWoman//1 12 } Sex; 13  14 typedef struct{ 15     int year; 16     int month; 17     int day; 18 } Date; 19  20 typedef enum{ 21     ColorBlack,//0 22     ColorWright,//1 23     ColorRed//2 24 } Color; 25  26 //狗類聲明 27 //成員變量:體重,毛色 28 //方法:吃東西,跑 29 @interface Dog : NSObject 30 { 31     @public 32     double hairColor;//毛色 33     double weight;//體重 34 } 35 - (void) eat; 36 - (void) run; 37 @end 38 //狗類實現 39 @implementation Dog 40 - (void) eat 41 { 42     43     weight += 1; 44     NSLog(@"喂狗飯,體重是%f", weight); 45 } 46 - (void) run 47 { 48     weight -= 1; 49     NSLog(@"遛狗后,體重是%f", weight); 50 } 51 @end 52 //學生類聲明 53 @interface Student : NSObject 54 { 55     @public 56     char *name;//姓名 57     //如果用布爾類型定義性別,不太好,容易讓外人搞混,不利于團隊的代碼共享,BOOL sex;要么男,要么女,YES or NO 58     //如果屬性只有幾個固定的取值,那么最好用枚舉 59     Sex sex;//性別枚舉 60     //不要寫成這樣,很傻,很累,使用結構體 61     //int year; 62     //int month; 63     //int day; 64     Date birthday;//生日結構 65     double weight;//體重 66     Color favourColor;//最喜歡的顏色枚舉 67     //每個學生都養一條狗,必須用指針,oc的對象都是用指針來操作的! 68     Dog *dog; 69 } 70 //類的聲明里,任何數據類型都是可以聲明的,對象方法的聲明,不在花括號里,但是在類的聲明范圍內寫 71 - (void) eat; 72 - (void) exercise; 73 - (void) PRint;//打印全部信息 74 - (void) walkTheDog;//遛狗 75 - (void) feedTheDog;//喂狗 76 @end 77 //設計到這一步,類還沒完成,如果沒有類的實現,編譯沒事,但是鏈接會報錯。必須有類的實現 78 @implementation Student 79 - (void) eat 80 { 81     82     weight += 1; //每吃一頓,體重增加一公斤 83     NSLog(@"吃完飯,體重是%f", weight); 84 } 85 - (void) exercise 86 { 87     weight -= 1;    //每次鍛煉,體重減少一公斤 88     NSLog(@"鍛煉后,體重是%f", weight); 89 } 90 - (void) print 91 { 92     NSLog(@"性別 = %d, 喜歡的顏色 = %d, 姓名= %s, 生日 = %d-%d-%d", sex, favourColor, name, birthday.year, birthday.month, birthday.day); 93 } 94 - (void) walkTheDog 95 { 96     //調用狗類對象的run方法,這是面向對象思維的體現 97     [dog run]; 98     99 }100 - (void) feedTheDog101 {102     [dog eat];103 }104 @end105 106 int main()107 {108     Student *student = [Student new];109     student->weight = 50;  //體重110     student->sex = SexMan;    //性別    111 //下面的寫法不對,只有在定義結構體變量的同時初始化是合法的,而現在因為已經存在了結構體的變量(類聲明里),不可以用下面的方法再次直接去初始化,否則報錯112     //student->birthday = {1990, 11, 11};//生日113 114 //可以用下面的方法,重定義生日結構新的變量,同時初始化,再賦值給birthday115     //Date date = {1990, 11, 11};116     //student->birthday = date;117     118 //或者使用下面的方法,使用指針去訪問結構體變量birthday,再使用結構體變量訪問里面的結構體成員,去賦值119     student->birthday.year = 1990;120     student->birthday.month = 5;121     student->birthday.day = 28;122     123     //最喜歡的顏色124     student->favourColor = ColorBlack;125     //姓名126     student->name = "dashuai";127     //學生類內部的狗的指針成員去指向一個狗類的一個對象(也就是一條狗)128     Dog *d = [Dog new];//創建狗類的一個對象,用d指向129     d->hairColor = ColorWright;130     d->weight = 20;//訪問狗類的成員131     student->dog = d;//把這個狗類的對象賦值給學生類里狗類的指針,被該指針指向,學生就可以操作狗的對象了132     [student walkTheDog];133     [student feedTheDog];134     [student print];135 136 //    [student eat];137 //    [student eat];138 //    [student exercise];139 //    [student exercise];140     return 0;141 }

Xcode 的代碼提示功能的關閉和開啟

再次熟悉下,oc 里方法名,方法類型,返回值類型,方法參數的部分

 

開發 IOS 到一定程度,要習慣看蘋果的官方文檔

 

oc 里的數據類型

Object-c提供基本數據類型:int 、float 、double 、char

 

int:

八進制 ,整型第一位為 0, NSLog 的格式符為: %o ,顯示的八進制不帶前導 0

十六進制 ,以 0x 開頭的整型,NSLog 的格式符為: 若(%X 或%#X) 顯示的十六進制用大寫

%#o 顯示的八進制帶前導0

%x 顯示的十六進制不帶前導 0x

%#x 顯示的十六進制帶前導0x

 

 

float:
NSLog 的格式符:%f
NSLog 的格式符:%e 科學計數法顯示值
NSLog 的格式符:%g 指數的值小于-4 大于 5,采用%e,否則采用%f

十六進制的浮點常量包含前導 0x 或 0X,后面緊跟一個或多個十進制或十六進制數字,再后是p 或 P,最后,是可以帶符號的二進制指數。例:0x0.3p10 表示的值為 3/16*2^10

注:若無特殊說明,Object-c 將所有的浮點常量看做 double 值,要顯示 double 值可使用和 float一樣的格式符。

 

char:

NSLog 的格式符:%c

long double 常量寫成尾部帶有字母 l 或者 L 的浮點常量。1.234e+7L


注:id 類型可以通過類型轉化符可以將一般的id 類型的對象轉換成特定的對象。

_Bool ;處理 Boolean(即 0 或 1)

_Complex;處理復數
_Imaginary;處理抽象數字 

 

鍵盤輸入:

int number;scanf("%i",&number); 

 

 

實例變量的初始化值默認為 0 

 

實例變量作用域的指令:

@protected;實例變量可被該類及任何子類中定義的方法直接訪問(默認的情況) 。

@private;實例變量可被定義在該類的方法直接訪問,不能被子類定義的方法直接訪問。

@public;實例變量可被該類中定義的方法直接訪問,也可被其他類或模塊中定義的方法訪問。使得其他方法或函數可以通過(->)來訪問實例變量(不推薦用) 。

@package;對于 64 位圖像,可以在實現該類的圖像的任何地方訪問這個實例變量。 

 

 

在類中定義靜態變量和 C 一樣

voaltile說明符和const 正好相反,明確告訴編譯器,指定類型變量的值會改變。(I/O端口)

比如要將輸出端口的地址存儲在 outPort 的變量中。

volatile char *outPort;*outPort = 'O';*outPort = 'N';

這樣就可以避免編譯器將第一個賦值語句從程序中刪除 。

枚舉數據類型、typedef 語法以及數據類型的轉換和 C 也是一樣。 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人综合网网址| 亚洲自拍偷拍色片视频| 国产精品户外野外| 色香阁99久久精品久久久| 久久91亚洲精品中文字幕| 日韩美女在线播放| 日韩在线视频观看正片免费网站| 中文字幕亚洲欧美在线| 日韩精品中文字幕在线| 亚洲性生活视频在线观看| 日韩成人av一区| 欧美最顶级丰满的aⅴ艳星| 亚洲男人天堂久| 一区二区三区天堂av| 日本欧美国产在线| 亚洲精品久久久久久久久久久久| 亚洲精品视频在线播放| 欧美一区二粉嫩精品国产一线天| 51色欧美片视频在线观看| 中国日韩欧美久久久久久久久| 91沈先生作品| 欧美乱人伦中文字幕在线| 亚洲色图av在线| 97涩涩爰在线观看亚洲| 久久综合久久美利坚合众国| 97热在线精品视频在线观看| 中文字幕欧美国内| 久久在线视频在线| 91精品国产网站| 爽爽爽爽爽爽爽成人免费观看| 欧美亚洲国产精品| 国产精品99免视看9| 欧美成人精品在线观看| 久热爱精品视频线路一| 久久久久久久成人| 久久电影一区二区| 亚洲欧美自拍一区| 国产精品视频一区国模私拍| 亚洲欧美日韩精品久久亚洲区| 亚洲人成电影网站色xx| 欧美大成色www永久网站婷| 亚洲va久久久噜噜噜久久天堂| 欧美高清视频一区二区| 久久久久亚洲精品成人网小说| 亚洲欧美日韩国产成人| 久久99精品久久久久久青青91| 亚洲免费电影在线观看| 日韩电影免费观看中文字幕| 亚洲国产精品女人久久久| 美女福利视频一区| 亚洲国产精品va在线| 亚洲国产精品99| 国产亚洲综合久久| 日韩免费视频在线观看| 亚洲社区在线观看| 国产精品一区=区| 日韩精品一区二区三区第95| 欧美电影免费观看高清完整| 亚洲va欧美va在线观看| 日本欧美国产在线| 亚洲精品丝袜日韩| 亚洲第一男人天堂| 国产91精品最新在线播放| 一色桃子一区二区| 在线日韩第一页| 主播福利视频一区| 国产精品成人观看视频国产奇米| 久久久人成影片一区二区三区| 久久91精品国产91久久久| 九九九久久久久久| 91精品国产成人| 国产欧美日韩中文字幕在线| 午夜精品一区二区三区在线| 亚洲成人精品av| 精品一区二区亚洲| 成人免费福利在线| 国产精品三级久久久久久电影| 宅男66日本亚洲欧美视频| 久久国产精品久久精品| 91在线|亚洲| 欧美大荫蒂xxx| 国内精品久久久久久影视8| 欧美重口另类videos人妖| 国产91精品在线播放| 97免费视频在线播放| 日产精品99久久久久久| 伊人青青综合网站| 久久综合色88| 亚洲视屏在线播放| 欧美激情免费在线| 日韩精品视频中文在线观看| 日韩av理论片| 国产成人亚洲综合91| 中国日韩欧美久久久久久久久| 欧美午夜美女看片| 国产啪精品视频| 亚洲国产精品久久久久秋霞蜜臀| 欧美大片大片在线播放| 亚洲色图av在线| 精品美女国产在线| 亚洲激情在线观看视频免费| 久久久噜噜噜久噜久久| 精品国产老师黑色丝袜高跟鞋| 亚洲午夜色婷婷在线| 国产一区深夜福利| 亚洲电影免费观看高清完整版在线观看| 亚洲va码欧洲m码| 欧美床上激情在线观看| 中文字幕亚洲二区| 成人黄色av免费在线观看| 国产成人一区二区三区小说| 91av在线免费观看视频| 亚洲视频一区二区| 亚洲xxxxx性| 欧美成人免费在线视频| 亚洲桃花岛网站| 波霸ol色综合久久| 国产成人综合精品| 亚洲第一精品久久忘忧草社区| 国产欧美亚洲视频| 大胆人体色综合| 欧美精品videos另类日本| 日本精品久久久久影院| 欧美一级大片在线观看| 欧美裸体视频网站| 福利视频导航一区| 岛国av在线不卡| 黄色成人在线播放| 国内精品久久久久久| 欧美激情亚洲精品| 国产一区二区三区欧美| 亚洲在线免费看| 国产一区二区三区四区福利| 7777精品久久久久久| 国产精品中文字幕在线| 日韩中文字在线| 精品国模在线视频| 91精品国产自产在线| 欧美日韩国产麻豆| 国产suv精品一区二区| 欧美在线激情视频| 国产精品吴梦梦| 精品国产91久久久久久| 久久久久久亚洲精品中文字幕| 日韩精品在线观看网站| 亚洲精品国产美女| 日本欧美精品在线| 国产精品久久久久久久一区探花| 欧美午夜精品久久久久久浪潮| 欧美精品video| 操日韩av在线电影| 日韩精品高清在线| 亚洲性视频网站| 亚洲国产精品电影| 亚洲福利在线观看| 久久久久久欧美| 成人夜晚看av| 国产精品免费一区二区三区都可以| 国内精品久久影院| 96精品视频在线| 亚洲美女精品成人在线视频| 日韩av中文字幕在线免费观看| 51午夜精品视频| 日韩在线视频免费观看高清中文|