5 25 類的引用與傳值

2021-07-02 20:28:03 字數 3032 閱讀 3068

1,類的引用

2,交叉引用與迴圈引用

3,傳值的方式

4,資料持久化

5,nsuserdefaults的使用

6,單例

//  observer.h

#import

#import "person.h"

#import "classroom.h"

@inte***ce

observer : nsobject

@property (strong, nonatomic) person *per;

@property (strong, nonatomic) classroom *classroom;

@property (strong, nonatomic) nsstring *keyword;

@end

//  observer.m

//----屬性傳值

-> b.xx

-> c.xx

// c.xx -> b.xx

//----初始化/** 方法傳值

//----資料持久化(將任意資料歸檔之後,存放進本地檔案)

//關聯式引用

#import "observer.h"

#import "computer.h"

@implementation

observer

- (instancetype)init

return

self;

}- (void)actionbegin

//  classroom.h

#import

@inte***ce

classroom : nsobject

//給classroom設定乙個strong mutable的array屬性

@property (strong, nonatomic) nsmutablearray *persons;//先初始化後使用

@property (strong, nonatomic) nsstring *keyword;

@end

//  classroom.m

#import "classroom.h"

@implementation

classroom

- (instancetype)init

return

self;

}@end

//  person.h

#import

@class

computer;

@class

classroom;

@inte***ce

person : nsobject

//@property (strong, nonatomic) nsstring *name;

@property (strong, nonatomic) computer *computer;

//strong: 在使用屬性的過程中,保證物件存在

//retain:

@property (strong, nonatomic) nsstring *keyword;

//建立乙個便利構造,通過電腦物件初始化person

+ (instancetype)personwithcomputer:(computer *)computer;

- (void)walktoclassroom:(classroom *)classroom;

@end

//  person.m

//// -------- computer屬性的存在時間

//------------ person的存在時間

#import "person.h"

#import "computer.h"

#import "classroom.h"

@implementation

person

- (instancetype)init

return

self;

}+ (instancetype)personwithcomputer:(computer *)computer

- (void)walktoclassroom:(classroom *)classroom

- (void)dealloc

@end

//  computer.h

#import

#import "person.h"

@inte***ce

computer : nsobject

@property (assign, nonatomic)person *delegate;//上一級

//assign: 弱引用,不增加引用計數,保證物件即時釋放

//weak:

@property (strong, nonatomic) nsstring *keyword;

@end

//  computer.m

#import "computer.h"

@implementation

computer

- (instancetype)init

return

self;

}//迴圈引用

- (void)dealloc

@end

//  main.m

#import

#import "observer.h"

#import "person.h"

#import "computer.h"

int main(int argc, const

char * argv)

return

0;}

類物件的「傳值」與「傳引用」

傳值 就是通過值來傳遞乙個物件,這個過程需要拷貝建構函式來進行。而 傳引用 實質上就是一種指標傳遞。兩種傳遞方式在使用上存在效率問題和 切割 問題。1 效率 而前所述,傳值 需要呼叫拷貝建構函式。例如 class ctest ctest const ctest ref ctest ctest fun...

傳值與傳引用

python的函式傳值和傳引用,和c c 語言是一樣的。在開始之前,我們有必要分清一下python的一些基礎概念。首先要說的是 變數 與 物件 在python中,型別屬於物件,變數是沒有型別的,這正是python的語言特性,也是吸引著很多pythoner的一點。所有的變數都可以理解是記憶體中乙個物件...

PHP的傳值與引用,php 傳值與傳引用的區別詳解

在php中傳值與傳引用對於我們來講是有比較大的區別的乙個引用可以呼叫記憶體位址賦值了,這樣只要記憶體位址中內容變化而賦值的變數也就變化了,付值只是把記憶體中值給其它變數而己。傳值 函式引數壓棧的是引數的副本。任何的修改是在副本上作用,沒有作用在原來的變數上。傳引用 壓棧的是引用的副本。由於引用是指向...