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強...