objective c 交叉引用問題的解決方案

2021-09-30 14:54:25 字數 608 閱讀 1881

objective-c 不允許交叉引用,上**:

a.h

#import #import "b.h"

@inte***ce a : nsobject

-(void) test:(b*)b; // 報錯點 2~

@end

a.mm

#import "a.h"

@implementation a

-(void) test:(b*)b

@end

b.h

#import #import "a.h"

@inte***ce b : nsobject

@end

b.mm

#import "b.h"

@implementation b

@end

解決方案:

標頭檔案中不要包含彼此的標頭檔案,將成員變數型別、方法引數型別改為由具體的類名 (a*,b*) 改為 id

.mm 實現檔案中包含彼此的標頭檔案不會出錯,that's all!

Objective c 迴圈引用

objective c 迴圈引用 oc記憶體管理中有一種特殊的物件管理,那就是迴圈引用。迴圈引用即是類a中有類b作為成員變數,同時類b中又同時有類a作為成員變數。這種情況下,引用計數器需要特殊的處理。下面分別介紹非arc情況下的迴圈引用和arc情況下的迴圈引用。一 非arc情況下的迴圈引用,pers...

Objective C中的弱引用

inte ce classa nsobject porperty nonatomic,weak classa tempclass1 property nonatomic,strong classa tempclass2 void test end implement classa void test...

Objective C中block迴圈引用問題詳解

目標 block執行過程中,self不會釋放 執行完可以釋放。最初block中直接使用self會強引用。self.myblock 或者使用了物件的屬性 self.myblock 程式設計客棧 在這樣的情況下,self強引用block,block也持有該物件,導致迴圈引用。要注意的是,只有在self強...