Objective-C(簡稱OC)
OC基礎知識:
OC繼承了C語言的所有特點。
- @ 表示C語言沒有 OC所增加的
- 每次拿記憶體之後,要檢視是否申請到記憶體,記憶體用完之後一定要手動去釋放,避免出現野指標。
if (strcmp(str3, "Good") == 0){
// printf("相同\n");
//
// }else{
// printf("不同\n");
// }
// //將str3賦值為NULL避免產生野指標,同時也避免重複釋放
// if (str3 != NULL) {
// free(str3);
// str3 = NULL;
// }
- NSLog 代表日曆性。 OC語言命名前面加倆個字母的字首,防止重複命名.Swift可在不同檔案同命名。
//Objective-C的字串
// NSString *str4 = @"hello, world!";
//
// NSLog(@"%@",str4);
//
// NSLog(@"Hello, World!");
- OC中#if 0 和 #endif 表示中間的程式碼為註釋掉,不參加編譯.和Swift中的 ** */ 意思大致相同
#if 0
#endif
- C語言中Int為32位 但是現在手機都是64位,所以加NSInteger
- 加下劃線表示為私有的,不能亂動。例如:
@interface YFStudent : NSObject{
NSString *_name;
NSInteger _age;
}
- 在OC中建立方法和Swift不一樣,Swift中新增類是Static 或者 class ,但是OC中:類的定義是 -(void) eat; OC的圓括號裡面為型別。OC中的布林值為大寫的BOOL,例如: -(BOOL) study:(NSString *) courseName
OC方法的名字有獨特之處;比如
方法名字: study: forHours:
- (BOOL) study:(NSString *) courseName forHours: (NSUInteger) hour;
- OC和Swift一樣,建立物件也需要初始化方法,在OC中初始化方法為輸入init,OC會自動新增 - (instancetype)init,這樣的話就可以在Init後面繼續新增:比如:
申明部分:
- (instancetype)initWithName:(NSString *) name age:(NSInteger) age;
實現部分:
在OC實現部分不用去賦值貼上,在類的實現方法部分輸入Init 自動會新增需要實現的部分程式碼:
//類的實現部分
@implementation YFStudent
-(instancetype)initWithName: (NSString *)name
age:(NSInteger)age{
if (self = [super init]) {
_name = name;
_age = age;
}
return self;
}
OC中給物件發訊息和Swift中有所不同,OC中為[a foo] ,為給物件發訊息,Swift中為[0.foo].
typedef long NSInteger;有自適應性,在32位和64位中都可以進行切換.
NSUInteger代表無負數
OC和C語言一樣先寫型別在寫變數,OC的方括號是寫右邊自動補左邊,Swift是寫左邊自動補右邊.OC中 alloc代表著請示記憶體.
int main(int argc, const char * argv[]) {
@autoreleasepool {
YFStudent *stu = [[YFStudent alloc] initWithName:@"王大錘" age:25];
這代表請求 給學生記憶體.
setName是修改學生的名字.
減號和屬性相關。+號和屬性無關
代表手動擴充套件(屬性合成)
- @synthesize <#property#>
- //如果不希望自動合成屬性
@dynamic <#property#>
- 匯入自己的為雙引號 "",匯入系統的為尖括號<>
類方法
- 1、物件方法(1) 減號 - 開頭(2)只能由物件來呼叫(3)物件方法中能訪問當前物件的成員變數(例項變數)
2、類方法(1) 加號 + 開頭(2) 只能由類(名)來呼叫(3) 類方法中不能訪問成員變數(例項變數)
3、類方法的好處和使用場合(1) 不依賴於物件,執行效率高(2) 能用類方法,儘量用類方法(3) 場合:當方法內部不需要使用到成員變數時,就可以改為類方法
self
self 是一個指標,用在方法中時,哪個物件呼叫該方法 self 指標就指向哪個物件,可以把它當作呼叫該方法的那個物件的指標一樣使用。
#import <Foundation/Foundation.h>/*
self 的用途:
(1) 誰呼叫了當前方法,self 就代表誰* self 出現在物件方法中,self 就代表物件* self 出現在類方法中,self 就代表類
(2) 在物件方法利用"self->成員變數名"訪問當前物件內部的成員變數
(3) [self 方法名]可以呼叫其他物件方法\類方法
繼承
#import <Foundation/Foundation.h>
1、繼承的好處:
(1) 抽取重複程式碼
(2) 建立了類之間的關係
(3) 子類可以擁有父類中的所有成員變數和方法
2、注意點(1) 基本上所有類的根類是 NSObject
多型
多型就是用父類型別的指標建立子類的物件,比如 Dog 類繼承了 Animal 類,下面都是多型:
Animal *aa = [Dog new];
Dog *dd = (Dog *)aa;
1.沒有繼承就沒有多型
2.程式碼的體現:父類型別的指標指向子類物件
3.好處:如果函式\方法引數中使用的是父類型別,可以傳入父類、子類物件
4.侷限性:父類型別的變數不能直接呼叫子類特有的方法。必須強轉為子類型別變數後,才能直接呼叫子類特有的方法
相關文章
- Objective-C 的名稱空間Object
- Swift和Objective-C混合程式設計——Swift呼叫OCSwiftObject程式設計
- Swift和Objective-C混合程式設計——OC呼叫SwiftSwiftObject程式設計
- OC多型 - OC多型
- ORACLE EBS 簡稱大全Oracle
- 【OC刨根問底】-Runtime簡單粗暴理解
- emc儲存相關簡稱
- Oracle ERP基本模組簡稱Oracle
- 公司的全稱轉為簡稱怎麼實現的
- swift 混編 oc 斷點時資料只有變數名稱不顯示值Swift斷點變數
- OC WKWebView的JS與OC互動、Cookie管理WebViewJSCookie
- LLM應用實戰: 給個公司簡稱,輸出公司全稱
- OC Category、AssociatedObjectGoObject
- iOS 編寫高質量Objective-C程式碼(一)—— 簡介iOSObjectC程式
- OC-測試:monkey For OC(iOS 猴子測試)iOS
- objective-c @()Object
- Objective-CObject
- javascript名稱空間簡單介紹JavaScript
- HTML標籤簡寫及全稱大全HTML
- OC 鏈式程式設計學習(簡單封裝MBProgressHUD用例)程式設計封裝
- OC(二)字串、方法字串
- oc的外掛
- OC:類與物件☀️物件
- ReactiveCocoa(OC版)React
- OC alloc、init、new
- OC UIImage基礎UI
- OC UIView基礎UIView
- ios OC初學iOS
- OC面試題1面試題
- swift專案呼叫OC庫 和OC專案 在swift檔案裡面全域性呼叫OC庫Swift
- jQuery事件名稱空間簡單介紹jQuery事件
- javascript建立名稱空間簡單介紹JavaScript
- 那些PHP中沒有全稱的簡寫PHP
- Red Hat Package Manager(簡稱RPM) 的使用Package
- Python中名稱空間包簡介Python
- Objective-C PropertyObject
- 將Objective-C語法簡化到極致,從此不再煩惱!!!Object
- OC記憶體管理記憶體